InkPresenter的替代品?

时间:2013-01-11 11:10:06

标签: windows-8 windows-phone-8

我在Windows 8中有一个应用程序是基于手写的。我试图将它移植到Windows Phone 8.但是WP8只有3个Inking类,没有Inkmanager类。我们可以使用画布而不是InkPresenter。是否可以使用所有笔划功能。我尝试了以下代码

private void MouseLeftButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
    {
        InkCanvas.CaptureMouse();
        StylusPointCollection MyStylusPointCollection = new StylusPointCollection();
        MyStylusPointCollection.Add(e.StylusDevice.GetStylusPoints(InkCanvas));
        NewStroke = new Stroke(MyStylusPointCollection);
        //InkCanvas.Strokes.Add(NewStroke);
        NewStroke.DrawingAttributes = SetAttributes(draw);
    }

它说的第二个最后一行有一个错误,canvas不包含笔画的定义。 InkPresenter不适合我的需求。如果不是canvas,还有其他可以捕获触摸输入的元素吗?

2 个答案:

答案 0 :(得分:1)

Canvas是正确的方法,但您应该能够在Windows Phone 8中使用InkPresenter class并将其放在Canvas中。您似乎正在尝试将Strokes添加到Canvas而不是代码中的InkPresenter。看看this sample如何在WP8上完成Ink。

答案 1 :(得分:1)

感谢您的回答,Inkpresenter无法满足我的需求。所以我使用了画布和触摸输入。 对于那些正在寻找线索的人......

我已经使用了Touch_FrameReported和这样的基本线条

            if (pointCollection[i].Action == TouchAction.Move)
            {
                Line line = new Line();

                line.X1 = preXArray[i];
                line.Y1 = preYArray[i];
                line.X2 = pointCollection[i].Position.X;
                line.Y2 = pointCollection[i].Position.Y;

                line.Stroke = new SolidColorBrush(Colors.Black);
                line.Fill = new SolidColorBrush(Colors.Black);
                line.StrokeThickness = 15;
                line.StrokeDashCap = PenLineCap.Round;
                line.StrokeStartLineCap = PenLineCap.Round;
                line.StrokeEndLineCap = PenLineCap.Round;

                drawCanvas.Children.Add(line);