Что эквивалентно Rectangle.Inflate () с использованием GraphicsPath? - PullRequest
1 голос
/ 25 февраля 2011

Я разрабатываю приложение для WindowsForms, и мне нужно выделить некоторые фигуры, определенные графическим путем.

using Drawing.Drawing2D

Есть ли что-то похожее на Rectangle.Inflate(), но для GraphicsPath?

Мне нужно только накачать одно и то же значение по x и y.

Заранее спасибо.

Ответы [ 2 ]

5 голосов
/ 25 февраля 2011

Если вы хотите, чтобы фигура, представленная вашим GraphicsPath, отображалась больше , лично я бы использовал графическое преобразование:

using (Graphics graphics = /* ... */)
{
    var matrix = new Matrix();
    matrix.Translate( /* ... */ );  // put the mid-point of the figure here
    matrix.Scale(1.5f, 1.5f);       // makes it 50% bigger
    matrix.Translate( /* ... */ );  // put the same mid-point here, but negative
    graphics.Transform = matrix;
    graphics.FillPath( /* ... */ );   // or DrawPath

    // Use this to reset the transform if you still need the Graphics object
    graphics.Transform = new Matrix();
}
1 голос
/ 25 февраля 2011

Ну, есть GraphicsPath.Widen, но это не совсем то же самое, что Rectangle.Inflate.

По сути, он рисует контур GraphicsPath с использованием указанного пера, а затем возвращает GraphicsPath, который представляет нарисованную таким образом область.

Если вы просто хотите нарисовать расширенную фигуру на экране, вы всегда можете нарисовать оба: сначала «расширенный» путь, затем оригинал (для «заполнения»). Но опять же, вы можете просто нарисовать контур исходного пути, используя ту же ручку ...

...