首页 文章

在WPF画布上添加ArcSegment

提问于
浏览
1

我正在尝试向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 . 在这种情况下会采取什么方法?还有一种方法可以在一个实体中将线和弧连接在一起吗?

1 回答

  • 2

    您无法将 ArcSegment 添加到 Canvas ,因为它不是 Shape ;它是几何API的一部分,表示基于路径的几何体中的弧,但它不是您通常直接使用的类 .

    没有 Shape 直接对应于'arc',但您可以为其几何体创建一个带有单个圆弧的 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的路径标记语法this MSDN article .

相关问题