2017-06-02 13 views
0

私は、InkCanvasに図形を描きたいと思っています。私は、次のしているページのコンストラクタでInkCanvasに線を引く

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> 
    <Canvas x:Name="selectionCanvas" /> 
    <InkCanvas x:Name="inker" /> 
</Grid> 

: - - :次のように

inker.InkPresenter.UnprocessedInput.PointerPressed += StartLine; 
inker.InkPresenter.UnprocessedInput.PointerMoved += ContinueLine; 
inker.InkPresenter.UnprocessedInput.PointerReleased += CompleteLine; 
inker.InkPresenter.InputProcessingConfiguration.RightDragAction = InkInputRightDragAction.LeaveUnprocessed; 

そして、3つのイベントがあります: -

private void StartLine(InkUnprocessedInput sender, PointerEventArgs args) 
{ 
    line = new Line(); 
    line.X1 = args.CurrentPoint.RawPosition.X; 
    line.Y1 = args.CurrentPoint.RawPosition.Y; 
    line.X2 = args.CurrentPoint.RawPosition.X; 
    line.Y2 = args.CurrentPoint.RawPosition.Y; 

    line.Stroke = new SolidColorBrush(Colors.Purple); 
    line.StrokeThickness = 4; 
    selectionCanvas.Children.Add(line); 
} 

private void ContinueLine(InkUnprocessedInput sender, PointerEventArgs args) 
{ 
    line.X2 = args.CurrentPoint.RawPosition.X; 
    line.Y2 = args.CurrentPoint.RawPosition.Y; 

} 

private void CompleteLine(InkUnprocessedInput sender, PointerEventArgs args) 
{ 

} 

ですこれまでのところ私は、次のXAMLを持っていますとにかくselectionCanvasに現在描画されている線をInkCanvasに描画できますか?

おかげで、

ジェフ

+0

あなたは 'InkCanvas'上の' 'Canvas' InkCanvas'に変換したり、描画した図形の図形を描画したいですがCanvas''に変換しますか? –

+0

こんにちはジェイデン、見ていただきありがとうございます。最終的には、他のインクストロークとともにシェイプを保存するために、InkCanvasにシェイプを描きたいと思っています。 – warntme

+0

インクストロークを保存したい場合は、 'Canvas'を使う必要はないと思われますか? InkCanvasでインクストロークをコピーしますか?その場合は、「SimpleInkのシナリオ2」(https://github.com/Microsoft/Windows-universal-samples/tree/f4e92d42dd103a7a2175ba750a89084c1c235d9a/Samples/SimpleInk)を参照してください。 –

答えて

0

おかげジェイデン、正しい方向に私を指摘

。完全を期すためにここに私の解決策からのコードされています -

private void CompleteLine(InkUnprocessedInput sender, PointerEventArgs args) 
{ 
    List<InkPoint> points = new List<InkPoint>(); 
     InkStrokeBuilder builder = new InkStrokeBuilder(); 


     InkPoint pointOne = new InkPoint(new Point(line.X1, line.Y1), 0.5f); 
     points.Add(pointOne); 
     InkPoint pointTwo = new InkPoint(new Point(line.X2, line.Y2), 0.5f); 
     points.Add(pointTwo); 

     InkStroke stroke = builder.CreateStrokeFromInkPoints(points, System.Numerics.Matrix3x2.Identity); 
     InkDrawingAttributes ida = inker.InkPresenter.CopyDefaultDrawingAttributes(); 
     stroke.DrawingAttributes = ida; 
     inker.InkPresenter.StrokeContainer.AddStroke(stroke); 
     selectionCanvas.Children.Remove(line); 
} 
関連する問題