WPF 中的墨迹入门

Windows Presentation Foundation (WPF) 具有墨迹功能,可以轻松将数字墨迹合并到应用中。

先决条件

若要使用以下示例,请先安装 Visual Studio。 它还有助于了解如何编写基本的 WPF 应用。 有关 WPF 入门的帮助,请参阅演练:我的第一个 WPF 桌面应用程序

快速启动

本部分有助于编写收集墨迹的简单 WPF 应用程序。

是否有墨迹?

创建支持墨迹的 WPF 应用:

  1. 打开 Visual Studio。

  2. 创建新的 WPF 应用

    在“新建项目”对话框中,展开“已安装”>“Visual C#”或“Visual Basic”>“Windows 桌面”类别。 然后选择“WPF 应用(.NET Framework)”应用模板。 输入一个名称,然后选择“确定”

    Visual Studio 将创建项目,并在设计器中打开 MainWindow.xaml

  3. <Grid> 标记之间键入 <InkCanvas/>

    XAML designer with InkCanvas tag

  4. 按 F5 在调试器中启动应用程序

  5. 使用触笔或鼠标,在窗口中写下“hello world”

你仅击键 12 次便通过墨迹编写了“hello world”应用程序!

丰富你的应用

让我们利用一些 WPF 功能。 将开始窗口标记和结束窗口标记之间的所有内容替换为以下标记<>:

<Page>
  <InkCanvas Name="myInkCanvas" MouseRightButtonUp="RightMouseUpHandler">
    <InkCanvas.Background>
      <LinearGradientBrush>
        <GradientStop Color="Yellow" Offset="0.0" />
          <GradientStop Color="Blue" Offset="0.5" />
            <GradientStop Color="HotPink" Offset="1.0" />
              </LinearGradientBrush>
    </InkCanvas.Background>
  </InkCanvas>
</Page>

此 XAML 会在着墨迹式图面上创建渐变画笔背景。

Gradient colors on inking surface in WPF app

在 XAML 后面添加一些代码

虽然 XAML 使设计用户界面变得非常简单,但任何实际应用程序都需要添加代码来处理事件。 下面是一个简单的示例,其中放大了墨迹以响应鼠标右键单击。

  1. 在 XAML 中设置 MouseRightButtonUp 处理程序:

    <InkCanvas Name="myInkCanvas" MouseRightButtonUp="RightMouseUpHandler">
    
  2. 在“解决方案资源管理器”中,展开 MainWindow.xaml 并打开代码隐藏文件(MainWindow.xaml.cs 或 MainWindow.xaml.vb)。 添加以下事件处理程序代码:

    private void RightMouseUpHandler(object sender,
                                     System.Windows.Input.MouseButtonEventArgs e)
    {
        Matrix m = new Matrix();
        m.Scale(1.1d, 1.1d);
        ((InkCanvas)sender).Strokes.Transform(m, true);
    }
    
    Private Sub RightMouseUpHandler(ByVal sender As Object, _
                                    ByVal e As System.Windows.Input.MouseButtonEventArgs)
    
        Dim m As New Matrix()
        m.Scale(1.1, 1.1)
        CType(sender, InkCanvas).Strokes.Transform(m, True)
    
    End Sub
    
  3. 运行该应用程序。 添加一些墨迹,然后右键单击鼠标或使用触笔按住(等效操作)。

    每次单击鼠标右键时,都会放大显示内容。

使用程序代码而不是 XAML

可以通过程序代码访问所有 WPF 功能。 按照以下步骤为 WPF 创建一个完全不使用任何 XAML 的“Hello Ink World”应用程序。

  1. 在 Visual Studio 中创建新控制台应用程序项目。

    在“新建项目”对话框中,展开“已安装”>“Visual C#”或“Visual Basic”>“Windows 桌面”类别。 然后选择“控制台应用(.NET Framework)”应用模板。 输入一个名称,然后选择“确定”

  2. 将以下代码粘贴到 Program.cs 或 Program.vb 文件中:

    using System;
    using System.Windows;
    using System.Windows.Controls;
    class Program : Application
    {
        Window win;
        InkCanvas ic;
    
        protected override void OnStartup(StartupEventArgs args)
        {
            base.OnStartup(args);
            win = new Window();
            ic = new InkCanvas();
            win.Content = ic;
            win.Show();
        }
    
        [STAThread]
        static void Main(string[] args)
        {
            new Program().Run();
        }
    }
    
    Imports System.Windows
    Imports System.Windows.Controls
    
    
    Class Program
        Inherits Application
        Private win As Window
        Private ic As InkCanvas
    
    
        Protected Overrides Sub OnStartup(ByVal args As StartupEventArgs)
            MyBase.OnStartup(args)
            win = New Window()
            ic = New InkCanvas()
            win.Content = ic
            win.Show()
    
        End Sub
    
    End Class
    
    Module Module1
    
        Sub Main()
            Dim prog As New Program()
            prog.Run()
    
        End Sub
    
    End Module
    
  3. 右键单击“解决方案资源管理器”中的“引用”,然后选择“添加引用”,以添加对 PresentationCore、PresentationFramework 和 WindowsBase 程序集的引用

    Reference Manager showing PresentationCore and PresentationFramework

  4. 按 F5 生成应用程序

另请参阅