資源描述:
《詳解C#創(chuàng)建不規(guī)則窗體的幾種方式》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、在這里我們將實(shí)現(xiàn)的是C#創(chuàng)建不規(guī)則窗體的幾種方式,包括自定義窗體,不規(guī)則圖形等等。希望對(duì)大家有所幫助。AD:現(xiàn)在,C#創(chuàng)建不規(guī)則窗體不是一件難事,下面總結(jié)一下:一、自定義窗體一般為規(guī)則的圖形,如圓、橢圓等。做法:重寫Form1_Paint事件(Form1是窗體的名字),最簡(jiǎn)單的一種情況如下:1.System.Drawing.Drawing2D.GraphicsPath?shape?=?new?System.Drawing.Drawing2D.GraphicsPath();?2.shape.AddEllips
2、e(0,0,this.Height,?this.Width);?3.this.Region?=?new?Region(shape);?即重繪窗體的規(guī)則。二、利用背景圖片實(shí)現(xiàn)1.??設(shè)置窗體的背景圖片,其中背景圖片是24位(不包括24)以下的位圖(BMP圖片),并且要設(shè)置TansparencyKey的值,一般為你背景圖片的背景色,即創(chuàng)建不規(guī)則圖片時(shí)的底色,一般設(shè)為你圖片中沒有的顏色。這種做法的不好的地方就是背景圖片一定要16位或者更低的,而且還要確保客戶端的顯示。如果監(jiān)視器的顏色深度設(shè)置大于24位,則不管Tr
3、ansparencyKey屬性是如何設(shè)置的,窗體的非透明部分都會(huì)產(chǎn)生顯示問題。若要避免出現(xiàn)這種問題,請(qǐng)確?!帮@示”控制面板中的監(jiān)視器顏色深度的設(shè)置小于24位。當(dāng)開發(fā)具有這種透明功能的應(yīng)用程序時(shí),請(qǐng)牢記應(yīng)使您的用戶意識(shí)到此問題。實(shí)現(xiàn)步驟如下:1.?新建windowsapplication2.?選擇窗體,找到BackgroundImage屬性,點(diǎn)擊打開新的窗口,選擇下面的導(dǎo)入資源文件,選擇你的不規(guī)則的BMP圖片3.?找到窗體的TansparencyKey,將它設(shè)置為你背景圖片的背景色(如黃色)4.?找到窗體的F
4、ormBorderStyle,將其設(shè)置為none,即不顯示標(biāo)題欄5.?運(yùn)行2.??????跟背景圖片一樣的圖形,不過(guò)是動(dòng)態(tài)加載,遍歷位圖以實(shí)現(xiàn)不規(guī)則窗體。它的原理是這樣的,在Form的load事件中寫方法使得窗體的描繪區(qū)域發(fā)生改變。實(shí)現(xiàn)步驟如下:1.?建立winform應(yīng)用程序2.?找到窗體的Load事件,雙擊進(jìn)行編輯3.?編寫方法,主要的代碼如下:1.class?BitmapRegion?2.{?3.????public?BitmapRegion()?4.????{?}?5.?
5、6.?7.????///???8.????///?Create?and?apply?the?region?on?the?supplied?control?9.????///?創(chuàng)建支持位圖區(qū)域的控件(目前有button和form)?10.????///???11.????///?The?Control?object?to?apply?the?region?to控件??12.????///?
6、"bitmap">The?Bitmap?object?to?create?the?region?from位圖??13.????public?static?void?CreateControlRegion(Control?control,?Bitmap?bitmap)?14.????{?15.????????//?Return?if?control?and?bitmap?are?null?16.????????//判斷是否存在控件和位圖?17.????????if?(control?==?nu
7、ll?
8、
9、?bitmap?==?null)?18.????????????return;?19.?20.????????//?Set?our?control''s?size?to?be?the?same?as?the?bitmap?21.????????//設(shè)置控件大小為位圖大小?22.????????control.Width?=?bitmap.Width;?23.????????control.Height?=?bitmap.Height;?24.????????//?Check?if?we?are?d
10、ealing?with?Form?here??25.????????//當(dāng)控件是form時(shí)?1.????????if?(control?is?System.Windows.Forms.Form)?2.????????{?3.????????????//?Cast?to?a?Form?object?4.????????????//強(qiáng)制轉(zhuǎn)換為FORM?5.????????????Form?form?=?(Form)c