在 .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 位分辨率。