在 .NET 中创建自定义形状的 Windows 窗体






1.65/5 (15投票s)
2004年8月22日
2分钟阅读

186110

4441
在 .NET 中创建自定义形状的 Windows 窗体。
引言
Windows 窗体最棒的方面之一是您可以将它们制作成非矩形形状。 Microsoft Windows Media™ Player 7 展示了这一特性,毫无疑问,许多看到它的开发人员都希望将其融入到自己的应用程序中。 经过多次搜索,我终于在 MSDN 中找到了答案。
使用代码
以下是创建简单非矩形窗体的步骤
- 创建一个具有非矩形形状的位图。 如图 1 所示,这将作为您稍后的窗体。 图 1 注意:选择一个容易记住的背景颜色,例如黑色,因为这在稍后会很重要。 
- 在 Microsoft Visual Studio .NET 中,创建一个 Windows 应用程序项目。
- 将 FormBorderStyle属性设置为None。
- 将窗体的 BackgroundImage属性设置为您上面创建的 .bmp 文件。
- 将窗体的 TransparencyKey属性设置为 .bmp 文件的背景颜色。 在上面的示例中,您应将其设置为黑色。 这将使窗体的黑色部分消失。注意:将 FormBorderStyle设置为None将禁用标题栏提供的标准功能。 因此,您必须向项目中添加自定义代码,以允许窗体移动、关闭、最小化和最大化。
编写代码以关闭窗体
- 从工具箱中,将一个 Button控件拖到窗体上,如图 2 所示。
- 在“属性”窗口中,将 Text属性设置为 "X"。
- 双击 Button以添加一个Click事件处理程序。
- 输入类似于以下的代码,以便在单击按钮时关闭窗体。private void button1_Click(object sender, System.EventArgs e) { this.Close(); } 
- 类似地,放下另一个按钮并输入以下用于最小化的代码,并输入类似于以下的代码private void button2_Click(object sender, System.EventArgs e) { this.WindowState=FormWindowState.Minimized; }  图 2 
编写代码以移动窗体
- 创建一个新变量public Point mouse_offset;这将在单击窗体时存储鼠标位置。 
- 为窗体的 MouseDown事件创建一个事件处理程序。 图 3 
- 输入类似于以下的代码,以根据鼠标的当前位置将坐标分配给 mouse_offset变量。private void Form1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e) { mouse_offset = new Point(-e.X, -e.Y); } 
- 类似地,为窗体的 MouseMove事件创建一个事件处理程序。
- 输入类似于以下的代码。 当单击鼠标左键并拖动鼠标时,窗体的 Location属性将设置为新位置。private void Form1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e) { if (e.Button == MouseButtons.Left) { Point mousePos = Control.MousePosition; mousePos.Offset(mouse_offset.X, mouse_offset.Y); Location = mousePos; } } 保存应用程序。 按 F5 运行它。 窗体将像您在开头绘制的图像一样。 单击窗体上的任意位置并拖动它以查看移动功能。 单击“关闭窗体”按钮以关闭窗体。  注意:确保您的 VGA 卡设置为 16 位分辨率。 
