我正在尝试向WPF画布添加圆角矩形。我在几种方式中阅读了使用矩形的方法,但它们通常是添加UI元素,例如使用LineGeometry,而不是WPF画布上的对象。
有人可以帮我解决如何处理ArcSegment类以将其添加到画布中的方式与添加线条相同吗?
例如,当使用一行时:
首先我定义线参数
Line botLine = new Line();
botLine.X1 = x + width - radius;
botLine.Y1 = y;
botLine.X2 = x + radius;
botLine.Y2 = y;
然后我可以像这样在画布上添加这行:
canvas1.Children.Add(botLine);
但我无法使用相同的方法添加ArcSegment。在这种情况下会采取什么方法?还有一种方法可以在一个实体中将线和弧连接在一起吗?
答案 0 :(得分:2)
您无法将ArcSegment
添加到Canvas
,因为它不是Shape
;它是几何API的一部分,表示基于路径的几何体中的弧,但它不是您通常直接使用的类。
没有Shape
直接对应于'但您可以为其几何体创建一个带有单个弧的Path
。在C#中执行此操作的最简单方法是使用StreamingGeometry
作为路径数据:
var g = new StreamGeometry();
using (var gc = g.Open())
{
gc.BeginFigure(
startPoint: new Point(0, 0),
isFilled: false,
isClosed: false);
gc.ArcTo(
point: new Point(100, 100),
size: new Size(100, 100),
rotationAngle: 0d,
isLargeArc: false,
sweepDirection: SweepDirection.Clockwise,
isStroked: true,
isSmoothJoin: false);
}
var path = new Path
{
Stroke = Brushes.Black,
StrokeThickness = 2,
Data = g
};
canvas1.Children.Add(path);
根据需要调整参数以适合您的使用案例。要了解如何在XAML中声明路径几何,请参阅WPF&#39}路径标记语法this MSDN article。