자바에서 UWP C#으로 응용 프로그램을 이식하고 있는데 새로운 InkCanvas으로 고민하고 있습니다. UWP의 새로운 InkCanvas에 익숙하신 분께 감사드립니다. 이것은 캔버스에 렌더링을 가져 오는 InkStroke 코드입니다.UWP에서 BezierSegment를 사용하여 Canvas에서 InkStroke를 렌더링하는 방법 C#
public static void Bezier(Canvas canvas, InkStroke stroke)
{
var segments = stroke.GetRenderingSegments();
PathFigure pthFigure = new PathFigure() { StartPoint = new Point(segments[0].Position.X, segments[0].Position.Y)};
for (int i = 1; i < segments.Count; i++)
{
var segment = segments[i];
var bezier = new BezierSegment();
bezier.Point1 = new Point(segment.BezierControlPoint1.X, segment.BezierControlPoint1.Y);
bezier.Point2 = new Point(segment.BezierControlPoint2.X, segment.BezierControlPoint2.Y);
bezier.Point3 = new Point(segment.Position.X, segment.Position.Y);
pthFigure.Segments.Add(bezier);
}
PathGeometry pthGeometry = new PathGeometry();
pthGeometry.Figures.Add(pthFigure);
Path path = new Path();
//path.Stroke = new SolidColorBrush(stroke.DrawingAttributes.Color);
//path.StrokeThickness = stroke.DrawingAttributes.Size.Height;
path.Stroke = new SolidColorBrush(Colors.Red);
path.StrokeThickness = 1;
path.Data = pthGeometry;
canvas.Children.Add(path);
}
불행히도 제어 지점이 엉망인 것으로 보이며 그 이유를 알 수 없습니다.
아래에서이 코드를 실행하는 이미지를 볼 수 있습니다. 검은 획은 원래 InkCanvas에서 렌더링 된 획이며 빨간색 획은 위 코드에서 Canvas에 렌더링 된 획입니다.
누구나 내가 뭘 잘못의 어떤 생각을 가지고?
내 편에서 코드 조각을 테스트하면 [이 그림] (https://i.stack.imgur.com/EmB3o.png)과 같은 결과가 나타납니다. 이것이 당신의 기대 결과입니까? 위 사진에서 보여준 결과를 재현 할 수 없습니다. 위의 메서드를 호출하는 방법과 XAML 코드도 제공하십시오. 또한 uwp 앱 버전입니다. –
XML 코드는 동적으로 빌드 한 이후에 쉽게 재현 할 수 없지만 문제가 발견되었습니다. 나는 drawingAttributes.FitToCurve = false를 설정하고 이것이 제어점을 0으로 만들었습니다. 이 설정은 렌더링에만 영향을 미쳤지 만 GetRenderingSegments를 호출 했으므로 이제는 의미가 있습니다. GetInkPoints를 사용하여 도형을 그린 다음 폴리 라인을 그릴 수있었습니다. 신속한 답변을 보내 주셔서 감사합니다! – ClaudiaWey