动手试验:创建非矩形窗口

此页仅适用于 WPF 项目

在 Microsoft Expression Blend 应用程序中,可能需要在运行时创建一个具有非矩形形状外观的窗口。常见的例子包括桌面小程序、小组件和媒体播放器等。可以在应用程序中更改 Window 对象的一些属性,然后创建事件处理程序方法以使用户无需标题栏即可移动窗口,从而创建一个非矩形窗口。

使非矩形窗口变得透明

  1. 在“对象和时间线”面板中,选择 Window 对象,然后在“属性”面板中的“外观”下,将 WindowStyle 属性更改为 None ,以删除窗口外壳(标题栏)。按 F5 查看没有默认外壳的窗口外观。请注意,此时不再显示标准的“最小化”、“最大化”、“还原”和“关闭”按钮。另请注意,该窗口将无法拖动。按 Alt+F4 关闭窗口。

    Note注意:

    有关其他 WindowStyle 选项的信息,请参阅 MSDN Cc295119.xtlink_newWindow(zh-cn,Expression.40).png 上的 WPF Windows 概述 Cc295119.xtlink_newWindow(zh-cn,Expression.40).png主题中的“WindowStyle”。

  2. 在“属性”面板中的“外观”下,选中 AllowsTransparency 复选框。请注意,窗口边框将不再显示。

  3. 若要向窗口添加透明度,可以在“属性”面板中的“画笔”下,将 Window 对象的 Background 属性设置为“无画笔”Cc295119.706bbd5c-c0e0-43a1-9604-297f019d0275(zh-cn,Expression.40).png。或者,如果希望用户能够单击窗口的隐藏区域,可将 Background 属性设置为“纯色画笔”Cc295119.3a66ec96-47bb-47fc-8876-6b9456feec3a(zh-cn,Expression.40).png,然后将背景画笔的 Alpha 属性设置为 1 。这将保留窗口的可单击区域同时又使此区域不可见。

  4. 最后,在“对象和时间线”面板中,单击 LayoutRoot 以启用该对象,然后从“工具”面板中向美工板添加对象。可以通过为对象设置 OpacityMask 画笔,来创建各种效果。

    有关如何执行此操作的信息,请参阅创建不透明蒙板

    也可以使用绘图工具(如“椭圆形”Cc295119.8938cfdf-9b75-4a33-bc88-b0636e114a0d(zh-cn,Expression.40).png 和“笔”Cc295119.894f8612-e0ed-4e00-84cf-a9bc8f38fc54(zh-cn,Expression.40).png 工具)添加形状和绘制的路径,然后将这些对象移动到其他对象背后(右键单击某个对象并单击“排序”)。 LayoutRoot 的内容实际上将定义应用程序的大纲。

  5. 再次按 F5 查看窗口当前的外观。请注意,此时仍不能拖动该窗口。按 Alt+F4 关闭窗口。

添加代码以允许在运行时拖动窗口

使窗口透明之后,就会失去重定位无标题栏窗口的能力。若要使窗口再次成为可移动的,必须向该窗口添加一个事件处理程序,然后向相关的代码隐藏文件中添加少量代码。

  1. 单击“文件”菜单上的“全部保存”,将项目保存到硬盘上。(如果项目从未保存过,则不能向其中添加事件处理程序方法。)

  2. 在“对象和时间线”面板中选定 Window 对象,然后在“属性”面板中单击“事件”Cc295119.6c67bb3b-e8a2-4a63-bad5-54d5c15b04dd(zh-cn,Expression.40).png

  3. MouseLeftButtonDown 旁边键入 OnMouseLeftButtonDown ,然后按 Enter 键。

  4. 修改代码隐藏文件中生成的事件处理程序方法,以便事件处理程序类似于以下形式:

    private void OnMouseLeftButtonDown(object sender,
             System.Windows.Input.MouseButtonEventArgs e)
    {
      this.DragMove();
    }
    
    Private Sub OnMouseLeftButtonDown(ByVal sender As System.Object,
             ByVal e As System.Windows.Input.MouseButtonEventArgs)
      Me.DragMove()
    End Sub
    
  5. 按 F5 运行应用程序。

  6. 可以添加更多事件处理程序方法,例如可调用代码隐藏文件中 Close() 方法的按钮 Click 事件的方法。

    有关如何创建事件处理程序方法的详细信息,请参阅编写将对事件做出响应的代码

Microsoft Corporation 版权所有 ⓒ 2011。保留所有权利。