VintaSoft Imaging .NET SDK 15.1: Документация для .NET разработчика
Vintasoft.Imaging.Drawing Namespace / DrawingEngine Class / DrawPath Methods / DrawPath(IDrawingPen,IGraphicsPath) Method
Синтаксис Example Требования Смотрите также
В этом разделе
DrawPath(IDrawingPen,IGraphicsPath) Метод (DrawingEngine)
В этом разделе
Рисует путь.
Синтаксис
'Declaration

Public Overloads Sub DrawPath( _
ByVal pen
Перо, определяющее цвет, ширину и стиль контура.
As IDrawingPen, _
ByVal path
Путь рисования.
As IGraphicsPath _
)
public void DrawPath(
IDrawingPen pen,
IGraphicsPath path
)

Parameters

pen
Перо, определяющее цвет, ширину и стиль контура.
path
Путь рисования.
Пример

Вот пример, показывающий, как нарисовать путь с помощью механизма рисования.


''' <summary>
''' Draws objects using pens with different settings on specified drawing engine.
''' </summary>
''' <param name="drawingEngine">Drawing engine.</param>
''' <param name="area">Area to draw objects in.</param>
Public Shared Sub PenExample(drawingEngine As DrawingEngine, area As RectangleF)
    Dim factory As DrawingFactory = drawingEngine.DrawingFactory

    ' create graphics path to draw
    Using path As IGraphicsPath = factory.CreateGraphicsPath()
        ' add path elements
        Dim linePoints As PointF() = New PointF() {New PointF(area.X + area.Width * 0.15F, area.Y + area.Height * 0.47F), New PointF(area.X + area.Width * 0.15F, area.Y + area.Height * 0.3F), New PointF(area.X + area.Width * 0.23F, area.Y)}

        path.AddLines(linePoints)

        Dim curvePoints As PointF() = New PointF() {New PointF(area.X + area.Width * 0.23F, area.Y), New PointF(area.X + area.Width * 0.47F, area.Y + area.Height * 0.1F), New PointF(area.X + area.Width * 0.47F, area.Y + area.Height * 0.2F), New PointF(area.X + area.Width * 0.35F, area.Y + area.Height * 0.22F), New PointF(area.X + area.Width * 0.27F, area.Y + area.Height * 0.24F), New PointF(area.X + area.Width * 0.27F, area.Y + area.Height * 0.35F), _
            New PointF(area.X + area.Width * 0.45F, area.Y + area.Height * 0.47F)}

        path.AddBezierCurves(curvePoints)

        path.Transform(AffineMatrix.CreateScaling(0.66F, 1, area.X, area.Y))

        ' set minimum pen width
        Dim minPenWidth As Single = area.Width * 0.005F

        ' create simple pen and draw a path
        Using pen As IDrawingPen = factory.CreatePen(Color.Red, minPenWidth * 2)
            drawingEngine.DrawPath(pen, path)
        End Using

        ' translate path
        path.Transform(AffineMatrix.CreateTranslation(area.Width / 3, 0))

        ' create pen with dash pattern and arrow cap on line end
        Using pen As IDrawingPen = factory.CreatePen(Color.Red, minPenWidth)
            Using cap As DrawingLineCap = factory.CreateLineCap(DrawingLineCapType.Arrow, area.Height * 0.1F, area.Width * 0.1F)
                pen.DashPattern = New Single() {3, 1}
                ' draw path
                drawingEngine.DrawPath(pen, path, Nothing, cap)
            End Using
        End Using
        ' translate path
        path.Transform(AffineMatrix.CreateTranslation(area.Width / 3, 0))

        ' create pen with dash pattern and dash cap
        Using pen As IDrawingPen = factory.CreatePen(Color.Red, minPenWidth * 3)
            pen.DashPattern = New Single() {1, 1}
            pen.DashCap = LineDashCapStyle.Round
            pen.LineCap = LineCapStyle.Round
            ' draw path
            drawingEngine.DrawPath(pen, path)
        End Using
        ' translate path
        path.Transform(AffineMatrix.CreateTranslation(0, area.Height / 2))

        ' create pen with round line join and butt cap on line start
        Using pen As IDrawingPen = factory.CreatePen(Color.DarkGreen, minPenWidth * 7)
            Using cap As DrawingLineCap = factory.CreateLineCap(DrawingLineCapType.Butt, area.Height * 0.1F, area.Width * 0.1F)
                pen.LineJoin = LineJoinStyle.Round
                ' draw path
                drawingEngine.DrawPath(pen, path, cap, Nothing)
            End Using
        End Using
        ' translate path
        path.Transform(AffineMatrix.CreateTranslation(-area.Width / 3, 0))

        ' create pen with bevel line join and draw path
        Using pen As IDrawingPen = factory.CreatePen(Color.Blue, minPenWidth * 6)
            pen.LineJoin = LineJoinStyle.Bevel
            drawingEngine.DrawPath(pen, path)
        End Using
        ' translate path
        path.Transform(AffineMatrix.CreateTranslation(-area.Width / 3, 0))

        ' create pen with dash pattern, dash offset and different line caps
        Using pen As IDrawingPen = factory.CreatePen(Color.Blue, minPenWidth)
            Using startCap As DrawingLineCap = factory.CreateLineCap(DrawingLineCapType.FilledRectangle, minPenWidth * 10, minPenWidth * 10)
                Using endCap As DrawingLineCap = factory.CreateLineCap(DrawingLineCapType.Ellipse, minPenWidth * 10, minPenWidth * 10)
                    pen.DashOffset = 5
                    pen.DashPattern = New Single() {3, 1, 1, 1}
                    ' draw path
                    drawingEngine.DrawPath(pen, path, startCap, endCap)
                End Using
            End Using
        End Using
    End Using
End Sub


/// <summary>
/// Draws objects using pens with different settings on specified drawing engine.
/// </summary>
/// <param name="drawingEngine">Drawing engine.</param>
/// <param name="area">Area to draw objects in.</param>
public static void PenExample(DrawingEngine drawingEngine, RectangleF area)
{
    DrawingFactory factory = drawingEngine.DrawingFactory;

    // create graphics path to draw
    using (IGraphicsPath path = factory.CreateGraphicsPath())
    {
        // add path elements
        PointF[] linePoints = new PointF[]
        {
            new PointF(area.X + area.Width * 0.15f, area.Y + area.Height * 0.47f),
            new PointF(area.X + area.Width * 0.15f, area.Y + area.Height * 0.3f),
            new PointF(area.X + area.Width * 0.23f, area.Y),
        };

        path.AddLines(linePoints);

        PointF[] curvePoints = new PointF[]
        {
            new PointF(area.X + area.Width * 0.23f, area.Y),
            new PointF(area.X + area.Width * 0.47f, area.Y + area.Height * 0.1f),
            new PointF(area.X + area.Width * 0.47f, area.Y + area.Height * 0.2f),
            new PointF(area.X + area.Width * 0.35f, area.Y + area.Height * 0.22f),
            new PointF(area.X + area.Width * 0.27f, area.Y + area.Height * 0.24f),
            new PointF(area.X + area.Width * 0.27f, area.Y + area.Height * 0.35f),
            new PointF(area.X + area.Width * 0.45f, area.Y + area.Height * 0.47f),
        };

        path.AddBezierCurves(curvePoints);

        path.Transform(AffineMatrix.CreateScaling(0.66f, 1, area.X, area.Y));

        // set minimum pen width
        float minPenWidth = area.Width * 0.005f;

        // create simple pen and draw a path
        using (IDrawingPen pen = factory.CreatePen(Color.Red, minPenWidth * 2))
            drawingEngine.DrawPath(pen, path);

        // translate path
        path.Transform(AffineMatrix.CreateTranslation(area.Width / 3, 0));

        // create pen with dash pattern and arrow cap on line end
        using (IDrawingPen pen = factory.CreatePen(Color.Red, minPenWidth))
        using (DrawingLineCap cap = factory.CreateLineCap(DrawingLineCapType.Arrow, area.Height * 0.1f, area.Width * 0.1f))
        {
            pen.DashPattern = new float[] { 3, 1 };
            // draw path
            drawingEngine.DrawPath(pen, path, null, cap);
        }
        // translate path
        path.Transform(AffineMatrix.CreateTranslation(area.Width / 3, 0));

        // create pen with dash pattern and dash cap
        using (IDrawingPen pen = factory.CreatePen(Color.Red, minPenWidth * 3))
        {
            pen.DashPattern = new float[] { 1, 1 };
            pen.DashCap = LineDashCapStyle.Round;
            pen.LineCap = LineCapStyle.Round;
            // draw path
            drawingEngine.DrawPath(pen, path);
        }
        // translate path
        path.Transform(AffineMatrix.CreateTranslation(0, area.Height / 2));

        // create pen with round line join and butt cap on line start
        using (IDrawingPen pen = factory.CreatePen(Color.DarkGreen, minPenWidth * 7))
        using (DrawingLineCap cap = factory.CreateLineCap(DrawingLineCapType.Butt, area.Height * 0.1f, area.Width * 0.1f))
        {
            pen.LineJoin = LineJoinStyle.Round;
            // draw path
            drawingEngine.DrawPath(pen, path, cap, null);
        }
        // translate path
        path.Transform(AffineMatrix.CreateTranslation(-area.Width / 3, 0));

        // create pen with bevel line join and draw path
        using (IDrawingPen pen = factory.CreatePen(Color.Blue, minPenWidth * 6))
        {
            pen.LineJoin = LineJoinStyle.Bevel;
            drawingEngine.DrawPath(pen, path);
        }
        // translate path
        path.Transform(AffineMatrix.CreateTranslation(-area.Width / 3, 0));

        // create pen with dash pattern, dash offset and different line caps
        using (IDrawingPen pen = factory.CreatePen(Color.Blue, minPenWidth))
        using (DrawingLineCap startCap = factory.CreateLineCap(DrawingLineCapType.FilledRectangle, minPenWidth * 10, minPenWidth * 10))
        using (DrawingLineCap endCap = factory.CreateLineCap(DrawingLineCapType.Ellipse, minPenWidth * 10, minPenWidth * 10))
        {
            pen.DashOffset = 5;
            pen.DashPattern = new float[] { 3, 1, 1, 1 };
            // draw path
            drawingEngine.DrawPath(pen, path, startCap, endCap);
        }
    }
}

Требования

Целевые платформы: .NET 10; .NET 9; .NET 8; .NET 7; .NET 6; .NET Framework 4.8, 4.7, 4.6, 4.5, 4.0, 3.5

Смотрите также