使用 c# 在 DrawingContext 中绘制折线

本文关键字:绘制 折线 DrawingContext 使用 | 更新日期: 2023-09-27 17:55:09

我想在Visual Layer画一个Polyline。这是我用来绘制Line的代码。我应该绘制多个Lines并将它们添加到VisualCollection还是有更好的方法?

var drawingVisual = new DrawingVisual();
using (var dc = drawingVisual.RenderOpen())
{
    var myPen = new Pen
    {
        Thickness = thickness,
        Brush = Settings.GridColor
    };
    myPen.Freeze();
    dc.DrawLine(myPen, pt1, pt2);
}

使用 c# 在 DrawingContext 中绘制折线

我认为使用DrawGeometry比使用DrawLine更好。

例:

var myPen = new Pen
{
    Thickness = thickness,
    Brush = Settings.GridColor
};
myPen.Freeze();

var geometry = new StreamGeometry();
using (StreamGeometryContext ctx = geometry.Open())
{
    ctx.BeginFigure(new Point(10, 100), true /* is filled */, true /* is closed */);
    ctx.LineTo(new Point(100, 100), true /* is stroked */, false /* is smooth join */);
    ctx.LineTo(new Point(100, 50), true /* is stroked */, false /* is smooth join */);
}
geometry.Freeze();
dc.DrawGeometry(null, myPen, geometry);
我认为

没有更好的方法,除了不调用myPen.Freeze(),我只是将其创建为const。我不知道这是否真的更有效率,我只是认为它在未来会更多地清除代码。我也不会(个人的事情)不使用var关键字,因为当您调用drawingVisual.RenderOpen()时,您创建什么类型会不那么模糊。