簡體   English   中英

使用C#在DrawingContext中繪制折線

[英]Draw Polyline in DrawingContext using c#

我想在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()時創建的類型將不太模糊。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM