上QQ阅读APP看书,第一时间看更新
实例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 }
举一反三
根据本实例,读者可以实现以下功能。
◇ 将窗体制作成各种卡通图形。
◇ 将窗体制作成桌面“小精灵”。