資源描述:
《c# winform中不規(guī)則窗體》由會員上傳分享,免費在線閱讀,更多相關內容在行業(yè)資料-天天文庫。
1、C#winform中不規(guī)則窗體制作的解決方案(已經解決24位色以上不能正常顯示問題)作者:楊丹相信每個編程愛好者都希望自己的程序不僅性能優(yōu)越而且有一個美觀的界面,一個區(qū)別于別人的程序的個性化的界面。然而以前煩瑣的API調用和大量的代碼使大家望而卻步。現在好了,在C#中通過少量的代碼就可以實現不規(guī)則窗體的制作。如果您有興趣就接著往下看吧。一、在說我用的方法前,我不得不說一下另一種方法,這種方法在實現不規(guī)則窗體自身顯示效果(即除開窗體的移動、最大最小話、關閉等)時是不用編代碼的。非常簡便,但它的致命缺點就是要要求程序運行環(huán)境在24位色以下,否則不規(guī)則窗體的透明部分就會顯示出來,窗
2、體會非常難看。方法1:?????步驟1:先用圖象處理軟件制作您的不規(guī)則窗體的位圖BMP(最好是位圖,其它的我沒有試過:))。制作時請注意將背景色(即需要設置成透明的顏色部分)設置成與非背景圖片顏色反差較大的顏色,并且使用一種容易記憶的顏色。如下圖:圖中黃顏色背景將要設置成透明部分步驟2:新建windows應用程序。創(chuàng)建windows窗體并設置窗體基本屬性。(1)將FormBorderStyle屬性設置為None。(2)將窗體的BackgroundImage屬性設置為先前創(chuàng)建的位圖文件。不必將文件添加到項目系統中;這將在指定該文件作為背景圖像時自動完成。(3)將Transpar
3、encyKey屬性設置為位圖文件的背景色,本例中為黃色。(此屬性告訴應用程序窗體中的哪些部分需要設置為透明。)?上面兩個步驟已經完成了不規(guī)則窗體自身顯示效果的制作,此刻您要做的就是為窗體添加移動、關閉、最大最小化的事件。這個將在方法2中詳細介紹。?方法1在24位色以下的環(huán)境中可以顯示正常,但在24位色以上時黃色背景不能消失,所以方法1不能勝任24位色以上環(huán)境。???為了解決這個問題,我們可以用到方法2。方法2步驟1:同方法1,先用圖象處理軟件制作您的不規(guī)則窗體的位圖BMP步驟2:創(chuàng)建windows應用程序。創(chuàng)建windows窗體。?????由于方法2是調用類來實現制作不規(guī)則窗
4、體,所以您只需要在窗體的LOAD事件中加入以下代碼:?privatevoidlogin_Load(objectsender,System.EventArgse)??{???//初始化調用不規(guī)則窗體生成代碼???BitmapRegionBitmapRegion=newBitmapRegion();//此為生成不規(guī)則窗體和控件的類???BitmapRegion.CreateControlRegion(this,newBitmap("HMlogin.bmp"));??}其中"HMlogin.bmp"為您制作的位圖。下面就是文件BitmapRegion.cs我在網上找到的是英文的,自
5、己翻譯了一下,英語水平有限,有錯的地方還請大家指出。/***************************************************************************************/////?功能描述:不規(guī)則窗體和控件的生成類//?撰寫人:不祥(網上搜集)//?////?修改說明:2005.8.31楊丹翻譯和修改///***************************************************************************************/usingSystem;usingSy
6、stem.Drawing;usingSystem.Drawing.Drawing2D;usingSystem.Windows.Forms;?namespaceMsgClassLibrary{?///?///SummarydescriptionforBitmapRegion.?///?publicclassBitmapRegion?{??publicBitmapRegion()??{}???///??///Createandapplytheregiononthesuppliedcontrol??///創(chuàng)建支持位圖區(qū)域的控件
7、(目前有button和form)??///??///TheControlobjecttoapplytheregionto控件??///TheBitmapobjecttocreatetheregionfrom位圖??publicstaticvoidCreateControlRegion(Controlcontrol,Bitmapbitmap)??{???//Returnif