我看了一下WinUI 3 Figma文件,InkToolbar是存在的,但它似乎在WindowsAppSDK NuGet包中不可用。是这样吗?如果WinUI3可以使用,那么如何实现它?谢谢我尝试实现控件,但我不能,我很困惑为什么它在FIGMA设计文件中。
k4aesqcs1#
根据版本1.4(实验),墨迹在WinUI 3中不可用:既不是InkToolbar,也不是InkCanvas。您可以模拟InkCanvas使用一个普通的画布和绘图形状(线),你甚至可以捕捉钢笔压力来模拟厚度。下面是一个代码片段:
bool penDown = false; Point oldPoint; InkStrokeBuilder inkStrokeBuilder = new InkStrokeBuilder(); List<InkStroke> strokes = new List<InkStroke>(); List<Point> currentStrokePoints; private void Canvas_PointerPressed(object sender, PointerRoutedEventArgs e) { e.Handled = true; if (e.Pointer.PointerDeviceType == Microsoft.UI.Input.PointerDeviceType.Mouse || e.Pointer.PointerDeviceType == Microsoft.UI.Input.PointerDeviceType.Pen) { penDown = true; var pnt = e.GetCurrentPoint(DrawCanvas); oldPoint = pnt.Position; } currentStrokePoints = new List<Point>(); currentStrokePoints.Add(oldPoint); } private void DrawCanvas_PointerMoved(object sender, PointerRoutedEventArgs e) { if (!penDown) return; var pnt = e.GetCurrentPoint(DrawCanvas); Line line = new Line(); line.X1 = oldPoint.X; line.Y1 = oldPoint.Y; line.X2 = pnt.Position.X; line.Y2 = pnt.Position.Y; line.Stroke = new SolidColorBrush(Colors.Black); line.StrokeThickness = 2 * pnt.Properties.Pressure; DrawCanvas.Children.Add(line); oldPoint = pnt.Position; currentStrokePoints.Add(pnt.Position); } private void DrawCanvas_PointerReleased(object sender, PointerRoutedEventArgs e) { penDown = false; currentStrokePoints.Add(e.GetCurrentPoint(DrawCanvas).Position); strokes.Add(inkStrokeBuilder.CreateStroke(currentStrokePoints)); }
您也可以稍后使用InkAnalyzer,它在WinUI 3中可用。在一次社区电话中,团队中的某个人提到负责墨迹的团队“可能会调查一下”,不管这可能意味着什么。它也可能意味着“忘记它”。
InkAnalyzer
1条答案
按热度按时间k4aesqcs1#
根据版本1.4(实验),墨迹在WinUI 3中不可用:既不是InkToolbar,也不是InkCanvas。您可以模拟InkCanvas使用一个普通的画布和绘图形状(线),你甚至可以捕捉钢笔压力来模拟厚度。
下面是一个代码片段:
您也可以稍后使用
InkAnalyzer
,它在WinUI 3中可用。在一次社区电话中,团队中的某个人提到负责墨迹的团队“可能会调查一下”,不管这可能意味着什么。它也可能意味着“忘记它”。