나는 이것을 위해 예제를 찾았지만, 내가 훑어 본 것들은 너비, 높이, 색상 등과 같은 InkCanvas DefaultDrawingAttributes를 설정하는 것과 같은 간단한 것들에 집중하는 것처럼 보입니다. 많은 재료가있는 것 같지 않습니다. 이.InkCanvas에서 그릴 방법을 어떻게 바꿀 수 있습니까?
예를 들어 마우스 버튼을 누르고 있으면 선을 그어 볼 수 있습니다. 선 대신에 타원을 그리거나 선의 시작과 끝 사이의 표본 지점 주위에 타원을 그 으려면 어떻게해야합니까?
나는 StrokeCollected 이벤트로 새로운 포인트를 얻을 수 있지만, 그 이상으로 나는 어디로 가야할지 모른다. This guy 그가 msdn의 코드를 작동시키는 것처럼 보였지만 그렇게 할 수 없었습니다. XAML을 사용하여 인터페이스를 작성하는 방법 만 알고 있으며 샘플도없는 것 같습니다.
편집
생성자에서 초기화 thisIsNotNice라는 StrokeCollection을 클래스 변수를 만들고이 한 :
private void InkCanvas_StrokeCollected(object sender, InkCanvasStrokeCollectedEventArgs e)
{
myInkCanvas.Strokes = thisIsNotNice;
foreach (StylusPoint p in e.Stroke.StylusPoints)
{
StylusPointCollection spc = new StylusPointCollection();
spc.Add(p);
Stroke s = new Stroke(spc);
s.DrawingAttributes.Height = 3;
s.DrawingAttributes.Width = 3;
thisIsNotNice.Add(s);
}
e.Handled = true;
}
을하지만 예상대로 작동하지 않습니다. 타원이 그려지지만 마우스로 그린 선은 그대로 있습니다. 또한 어떤 이유에서 처음으로 그것이 타원형을 그 으려면 처음에는 작동하지만 뒤에 타원과 선을 그립니다. 하지만 대신 이렇게하면 :
private void InkCanvas_StrokeCollected(object sender, InkCanvasStrokeCollectedEventArgs e)
{
myInkCanvas.Strokes = new System.Windows.Ink.StrokeCollection();
e.Handled = true;
}
줄이 화면에 표시되지 않습니다. 그래서, 나는 왜 그들이 위의 코드에서 지워지지 않고 있는지 이해하지 못합니다.
나는이 할 경우
private void InkCanvas_StrokeCollected(object sender, InkCanvasStrokeCollectedEventArgs e)
{
foreach (Stroke s in myInkCanvas.Strokes)
System.Diagnostics.Trace.WriteLine(s);
e.Handled = true;
}
나는 또한 캔버스 라인 스트로크가 포함되어 있음을 알 수있다.
스트로크를 컬렉션에 추가 한 후 스트로크를 지우는 것이 이상적이지는 않지만 적어도 원하는대로합니다. 선 색상을 배경과 동일하게 설정할 수는 있지만 타원 만 가져올 수는 없습니다. 나는 그것들을 별도의 콜렉션에도 복사 할 수있다. 그러나 그것은 단지 끔찍한 것이다.