2016-12-18 28 views
0

我開發一個通用的Windows平臺的應用程序和要修改中存在的墨跡畫布墨筆畫的屬性,我所知道的是,我可以如下訪問:如何在.net中修改InkCanvas的InkStrokes?

IReadOnlyList<InkStroke> = inkCanvas.InkPresenter.StrokeContainer.GetStrokes(); 

編輯大小或顏色的任何實例這些東西,並重新繪製它們?

另一個問題是我怎樣才能繪製該筆畫的事件? 例如,我怎樣才能在同一個油畫布上實時繪製完全相同的筆畫?

回答

0

通過爲InkStroke.DrawingAttributes設置新的InkDrawingAttributes,可以重新繪製Ink Canvas中存在的墨跡。

private void Button_Click(object sender, RoutedEventArgs e) 
{ 
    InkDrawingAttributes attr = new InkDrawingAttributes(); 
    attr.Color = Colors.Red; 
    attr.IgnorePressure = true; 
    attr.PenTip = PenTipShape.Circle; 
    attr.Size = new Size(4, 10); 
    attr.PenTipTransform = Matrix3x2.CreateRotation((float)(70 * Math.PI/180)); 
    IReadOnlyList<InkStroke> InkStrokeList = MyInk.InkPresenter.StrokeContainer.GetStrokes(); 
    foreach (InkStroke temp in InkStrokeList) 
    { 
     temp.DrawingAttributes = attr; 
    }   
} 

當一個或多個墨水筆劃被處理(溼到幹)由所述應用程序線程,然後複製存在InkStrokes到墨水畫布的新點的InkPresenter.StrokesCollected的事件發生。 您可以使用以下代碼實時在同一個Ink Canvas上的另一個位置上繪製完全相同的筆觸。

public MainPage() 
{ 
    this.InitializeComponent(); 
    MyInk.InkPresenter.InputDeviceTypes = CoreInputDeviceTypes.Mouse | CoreInputDeviceTypes.Touch; 
    MyInk.InkPresenter.StrokesCollected += InkPresenter_StrokesCollected; 
} 

private void InkPresenter_StrokesCollected(InkPresenter sender, InkStrokesCollectedEventArgs args) 
{ 
    foreach (var temp in args.Strokes) 
    { 
     temp.Selected = true; 
     sender.StrokeContainer.CopySelectedToClipboard(); 
     sender.StrokeContainer.PasteFromClipboard(new Point(100, 100)); 
    } 
}