WPF 中的墨迹入门
Windows Presentation Foundation (WPF) 具有墨迹功能,可以轻松将数字墨迹合并到应用中。
先决条件
若要使用以下示例,请先安装 Visual Studio。 它还有助于了解如何编写基本的 WPF 应用。 有关 WPF 入门的帮助,请参阅演练:我的第一个 WPF 桌面应用程序。
快速启动
本部分有助于编写收集墨迹的简单 WPF 应用程序。
是否有墨迹?
创建支持墨迹的 WPF 应用:
打开 Visual Studio。
创建新的 WPF 应用。
在“新建项目”对话框中,展开“已安装”>“Visual C#”或“Visual Basic”>“Windows 桌面”类别。 然后选择“WPF 应用(.NET Framework)”应用模板。 输入一个名称,然后选择“确定”。
Visual Studio 将创建项目,并在设计器中打开 MainWindow.xaml。
在
<Grid>
标记之间键入<InkCanvas/>
。按 F5 在调试器中启动应用程序。
使用触笔或鼠标,在窗口中写下“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 会在着墨迹式图面上创建渐变画笔背景。
在 XAML 后面添加一些代码
虽然 XAML 使设计用户界面变得非常简单,但任何实际应用程序都需要添加代码来处理事件。 下面是一个简单的示例,其中放大了墨迹以响应鼠标右键单击。
在 XAML 中设置
MouseRightButtonUp
处理程序:<InkCanvas Name="myInkCanvas" MouseRightButtonUp="RightMouseUpHandler">
在“解决方案资源管理器”中,展开 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
运行该应用程序。 添加一些墨迹,然后右键单击鼠标或使用触笔按住(等效操作)。
每次单击鼠标右键时,都会放大显示内容。
使用程序代码而不是 XAML
可以通过程序代码访问所有 WPF 功能。 按照以下步骤为 WPF 创建一个完全不使用任何 XAML 的“Hello Ink World”应用程序。
在 Visual Studio 中创建新控制台应用程序项目。
在“新建项目”对话框中,展开“已安装”>“Visual C#”或“Visual Basic”>“Windows 桌面”类别。 然后选择“控制台应用(.NET Framework)”应用模板。 输入一个名称,然后选择“确定”。
将以下代码粘贴到 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
右键单击“解决方案资源管理器”中的“引用”,然后选择“添加引用”,以添加对 PresentationCore、PresentationFramework 和 WindowsBase 程序集的引用。
按 F5 生成应用程序。
另请参阅
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈