使用 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);
}
我认为使用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()
时,您创建什么类型会不那么模糊。