實例006 非矩形窗體
實例說明
大部分Windows窗體都是一個矩形區域,讀者可能已經厭倦了這種中規中矩的矩形窗體。本實例中的窗體是一個異形窗體,運行本實例會看到一個非常可愛的窗體,單擊窗體右上角的就會使其關閉。實例運行結果如圖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 }
舉一反三
根據本實例,讀者可以實現以下功能。
◇ 將窗體制作成各種卡通圖形。
◇ 將窗體制作成桌面“小精靈”。
推薦閱讀
- 看透JavaScript:原理、方法與實踐
- OpenStack Cloud Computing Cookbook(Fourth Edition)
- Building a Quadcopter with Arduino
- 精通網絡視頻核心開發技術
- iOS應用逆向工程(第2版)
- Python數據可視化之Matplotlib與Pyecharts實戰
- Linux命令行與shell腳本編程大全(第4版)
- Python High Performance Programming
- C語言程序設計習題與實驗指導
- TypeScript 2.x By Example
- 3D Printing Designs:Octopus Pencil Holder
- 算法精解:C語言描述
- 情境微課開發(第2版)
- VMware vRealize Orchestrator Essentials
- Hands-On GUI Application Development in Go