C#开发案例精粹
上QQ阅读APP看书,第一时间看更新

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   }

举一反三

根据本实例,读者可以实现以下功能。

将窗体制作成各种卡通图形。

将窗体制作成桌面“小精灵”。