2016-12-18 6 views
0

, 내가 아는 건 내가 아래에 액세스 할 수 있습니다 이 물건들을 다시 그려 넣으면 되겠습니까?.net에서 InkCanvas의 InkStrokes를 수정하는 방법?</p> <pre><code>IReadOnlyList<InkStroke> = inkCanvas.InkPresenter.StrokeContainer.GetStrokes(); </code></pre> <p>편집 크기 나 색상의 모든 예 : 나는 보편적 인 윈도우 플랫폼 응용 프로그램을 개발하고 잉크 캔버스에 존재하는 잉크 스트로크의 속성을 수정할있어

또 다른 질문은 어떻게 그 선을 그릴 때 이벤트를 가질 수 있습니까? 예를 들어, 동일한 잉크 캔버스의 다른 위치에 똑같은 획을 실시간으로 그리려면 어떻게해야합니까?

답변

0

InkStroke.DrawingAttributes에 대해 InkDrawingAttributes을 새로 설정하여 잉크 캔버스에있는 잉크 스트로크를 다시 그릴 수 있습니다. 하나 이상의 잉크 스트로크가 애플리케이션 쓰레드 (건 습식)를 처리 한 다음 복사 잉크 캔버스의 새로운 포인트로 InkStrokes 존재하는 경우는

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의 이벤트가 발생한다. 다음 코드를 사용하면 동일한 잉크 캔버스의 다른 위치에 똑같은 획을 실시간으로 그릴 수 있습니다.

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