65.9K
CodeProject 正在变化。 阅读更多。
Home

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

starIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIconemptyStarIcon

1.65/5 (15投票s)

2004年8月22日

2分钟阅读

viewsIcon

186110

downloadIcon

4441

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

引言

Windows 窗体最棒的方面之一是您可以将它们制作成非矩形形状。 Microsoft Windows Media™ Player 7 展示了这一特性,毫无疑问,许多看到它的开发人员都希望将其融入到自己的应用程序中。 经过多次搜索,我终于在 MSDN 中找到了答案。

使用代码

以下是创建简单非矩形窗体的步骤

  1. 创建一个具有非矩形形状的位图。 如图 1 所示,这将作为您稍后的窗体。

    图 1

    注意:选择一个容易记住的背景颜色,例如黑色,因为这在稍后会很重要。

  2. 在 Microsoft Visual Studio .NET 中,创建一个 Windows 应用程序项目。
  3. FormBorderStyle 属性设置为 None
  4. 将窗体的 BackgroundImage 属性设置为您上面创建的 .bmp 文件。
  5. 将窗体的 TransparencyKey 属性设置为 .bmp 文件的背景颜色。 在上面的示例中,您应将其设置为黑色。 这将使窗体的黑色部分消失。

    注意:FormBorderStyle 设置为 None 将禁用标题栏提供的标准功能。 因此,您必须向项目中添加自定义代码,以允许窗体移动、关闭、最小化和最大化。

编写代码以关闭窗体

  1. 从工具箱中,将一个 Button 控件拖到窗体上,如图 2 所示。
  2. 在“属性”窗口中,将 Text 属性设置为 "X"。
  3. 双击 Button 以添加一个 Click 事件处理程序。
  4. 输入类似于以下的代码,以便在单击按钮时关闭窗体。
    private void button1_Click(object sender, System.EventArgs e)
    {
      this.Close();
    }
  5. 类似地,放下另一个按钮并输入以下用于最小化的代码,并输入类似于以下的代码
    private void button2_Click(object sender, System.EventArgs e)
    {
      this.WindowState=FormWindowState.Minimized;
    }

    图 2

编写代码以移动窗体

  1. 创建一个新变量
    public Point mouse_offset;

    这将在单击窗体时存储鼠标位置。

  2. 为窗体的 MouseDown 事件创建一个事件处理程序。

    图 3

  3. 输入类似于以下的代码,以根据鼠标的当前位置将坐标分配给 mouse_offset 变量。
    private void Form1_MouseDown(object sender, 
            System.Windows.Forms.MouseEventArgs e)
    {
        mouse_offset = new Point(-e.X, -e.Y);
    }
  4. 类似地,为窗体的 MouseMove 事件创建一个事件处理程序。
  5. 输入类似于以下的代码。 当单击鼠标左键并拖动鼠标时,窗体的 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 位分辨率。

© . All rights reserved.