2016-12-18 3 views
0

Je développe une plate-forme Windows universelle App et que vous souhaitez modifier l'attribut de Strokes d'encre qui existent dans l'encre de toile, Tout ce que je sais est que je peux accéder comme ci-dessous:Comment modifier InkStrokes d'un InkCanvas dans .net?

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

Tout exemple de la taille de l'édition ou de la couleur de ces choses et les redessiner?

Une autre question est comment puis-je avoir un événement sur le dessin que les traits? par exemple comment puis-je dessiner exactement le même trait sur un autre emplacement sur la même toile d'encre en temps réel?

Répondre

0

Vous pouvez redessiner vos traits d'encre existant dans Ink Canvas en définissant un nouveau InkDrawingAttributes pour InkStroke.DrawingAttributes.

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; 
    }   
} 

L'événement de InkPresenter.StrokesCollected se produit lorsqu'un ou plusieurs traits d'encre sont traitées (humide à sec) par le fil de l'application, puis copier existent InkStrokes à nouveau point d'encre toile. Vous pouvez dessiner exactement le même trait sur un autre emplacement sur le même canevas d'encre en temps réel en utilisant le code suivant.

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)); 
    } 
}