XAML InkToolbar在WinUI 3中可用吗?

jvidinwx  于 2023-06-19  发布在  其他
关注(0)|答案(1)|浏览(142)

我看了一下WinUI 3 Figma文件,InkToolbar是存在的,但它似乎在WindowsAppSDK NuGet包中不可用。是这样吗?
如果WinUI3可以使用,那么如何实现它?
谢谢
我尝试实现控件,但我不能,我很困惑为什么它在FIGMA设计文件中。

k4aesqcs

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中可用。
在一次社区电话中,团队中的某个人提到负责墨迹的团队“可能会调查一下”,不管这可能意味着什么。它也可能意味着“忘记它”。

相关问题