GraphicsPath AddLine создает неожиданный путь

Я пытаюсь нарисовать "папку", как изображение, используя GraphicsPath.

Моя функция для создания пути заключается в следующем:

Public Function FolderRect(ByRef r As Rectangle) As System.Drawing.Drawing2D.GraphicsPath

    Dim p As New System.Drawing.Drawing2D.GraphicsPath

    Dim iTabWidth As Integer = 30
    Dim iTabHeight As Integer = 12

    With p
        Call p.AddLine(r.Left, r.Top, r.Left + iTabWidth, r.Top)
        Call p.AddLine(r.Left + iTabWidth, r.Top, r.Left + iTabWidth, r.Top + iTabHeight)
        Call p.AddLine(r.Left + iTabWidth, r.Top + iTabHeight, r.Right, r.Top + iTabHeight)
        Call p.AddLine(r.Right, r.Top + iTabHeight, r.Right, r.Bottom)
        Call p.AddLine(r.Right, r.Bottom, r.Left, r.Bottom)
        Call p.AddLine(r.Left, r.Bottom, r.Left, r.Top)

        Call p.CloseFigure()
    End With

    Return p

End Function

Код выглядит правильно для меня, но результат не тот, который я ожидал:

введите описание изображения здесь

(Я создал "правильную" версию, используя редактор изображений).

Может ли это быть ошибкой в ​​GraphicsPath?

Вот как выглядят PathPoints: введите описание изображения здесь

Вот как выглядит "r": введите описание изображения здесь

1 ответ

Графический путь почти наверняка правильный. Вы можете убедиться в этом, посмотрев на свойство PathPoints графического пути.

Возможно, что при рисовании графического контура возникает ошибка округления. Попробуйте сделать путь того же размера, что и целевое растровое изображение.

Другие вопросы по тегам