官术网_书友最值得收藏!

bt2-L 實例006 非矩形窗體

實例說明

大部分Windows窗體都是一個矩形區域,讀者可能已經厭倦了這種中規中矩的矩形窗體。本實例中的窗體是一個異形窗體,運行本實例會看到一個非常可愛的窗體,單擊窗體右上角的P16a就會使其關閉。實例運行結果如圖1.7所示。

圖1.7 非矩形窗體

技術要點

以前創建非矩形窗體是一個既費時又費力的過程,其中涉及API調用和大量的編程工作。在.NET 4.5框架中,我們可以不調用API而非常輕松地實現這一功能。只要重寫窗體的OnPaint方法,在該方法中重新繪制窗體,然后將窗體設置為透明即可。

Form.OnPaint方法重寫Control.OnPaint方法,用來重新繪制窗體。其語法如下:

protected override void OnPaint (PaintEventArgs e)

參數說明如下。

PaintEventArgs:為Paint事件提供數據。

實現過程

01 新建一個項目,將其命名為SpecialSharpWindows,默認窗體為Form1。

02 在Form1窗體中添加Label控件,并將BackColor屬性設為透明,將Text屬性設為空。

03 將Form1窗體的TransparencyKey屬性設為窗體的背景色。

04 主要代碼。

設置圖片透明顏色的實現代碼如下:

01   private void Form1_Load(object sender, EventArgs e)
02   {
03       //從指定的圖片初始化System.Drawing.Bitmap類的新實例
04       bit = new Bitmap("heart.bmp"); 
05       //使用透明顏色對System.Drawing.Bitmap類進行透明設置
06       bit.MakeTransparent(Color.Transparent); 
07   }

重寫基類方法。代碼如下:

01   protected override void OnPaint(PaintEventArgs e)
02   {
03       e.Graphics.DrawImage((Image)bit, new Point(0, 0));//將圖片畫出
04   }

舉一反三

根據本實例,讀者可以實現以下功能。

將窗體制作成各種卡通圖形。

將窗體制作成桌面“小精靈”。

主站蜘蛛池模板: 望城县| 泾源县| 页游| 石林| 庐江县| 永泰县| 北川| 沅陵县| 洛川县| 县级市| 综艺| 白山市| 叙永县| 临猗县| 德州市| 新密市| 陕西省| 家居| 庆城县| 鞍山市| 贺兰县| 新郑市| 花垣县| 辽宁省| 泗水县| 襄垣县| 石景山区| 泰兴市| 鄂托克前旗| 信宜市| 正镶白旗| 敖汉旗| 县级市| 文化| 万盛区| 乌拉特中旗| 宕昌县| 庆云县| 九江市| 尤溪县| 长岭县|