我在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,还有其他可以捕获触摸输入的元素吗?
答案 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);