【问题标题】:Draw Polyline in DrawingContext using c#使用 c# 在 DrawingContext 中绘制折线
【发布时间】:2014-03-28 21:22:15
【问题描述】:

我想在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# wpf


【解决方案1】:

我认为使用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);

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-02
      • 1970-01-01
      • 1970-01-01
      • 2016-04-12
      • 1970-01-01
      • 2012-09-27
      • 2015-02-17
      • 1970-01-01
      相关资源
      最近更新 更多