2016-12-18 12 views
0

Я разработка универсальной платформы Windows App и хочу изменить атрибут рукописных штрихов, которые существуют в чернилах Canvas, Все, что я знаю, я могу получить доступ, как показано ниже:Как изменить InkStrokes InkCanvas в .net?

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

Любого пример размера редактирования или цвета из этих вещей и перерисовывая их?

Другой вопрос: как я могу провести мероприятие по рисованию этих штрихов? Например, как я могу нарисовать точно такой же штрих в другом месте на том же чернильном холсте в реальном времени?

ответ

0

Вы можете перерисовать штрихи чернил, которые существуют в холсте чернил, установив новый InkDrawingAttributes для 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; 
    }   
} 

Событие InkPresenter.StrokesCollected происходит тогда, когда один или несколько чернильных штрихи обрабатывается (мокрый на сухой) в потоке приложения, а затем скопировать существует InkStrokes к новой точке Ink Canvas. Вы можете нарисовать точно такой же штрих в другом месте на том же 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)); 
    } 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^