Как преобразовать RectangleF в PointF [] для рисования? - PullRequest
2 голосов
/ 23 февраля 2012

Я не уверен, что вопрос слишком тривиальный, но мне нужно использовать следующую перегрузку метода Graphics.DrawImage:

public void DrawImage(
    Image image,
    PointF[] destPoints,
    RectangleF srcRect,
    GraphicsUnit srcUnit,
    ImageAttributes imageAttr
)

У меня есть RectangleF в качестве прямоугольника назначения, поэтому мне нужно преобразовать RectangleF в PointF[], но пример в MSDN немного смутил меня, потому что он использует только три точки определить параллелограмм.

Как я мог это сделать?

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

Ответы [ 2 ]

2 голосов
/ 23 февраля 2012

Не могли бы вы создать его, просто создав массив?

(из памяти), где d - пункт назначения RectangleF:

destPoints[] = new PointF[4] { new PointF(d.Left, d.Top), new PointF(d.Right, d.Top), new PointF(d.Right, d.Bottom), new PointF(d.Left, d.Bottom) };
1 голос
/ 23 февраля 2012

Хорошо, я нашел его в MSDN :

Параметр destPoints указывает три точки параллелограмма.Три структуры PointF представляют левый верхний , верхний правый и нижний левый углы параллелограммаЧетвертая точка экстраполируется из первых трех для формирования параллелограмма.

Таким образом, вы можете построить массив точек следующим образом:

    private PointF[] GetPoints(RectangleF rectangle)
    {
        return new PointF[3]
        { 
            new PointF(rectangle.Left, rectangle.Top),
            new PointF(rectangle.Right, rectangle.Top),
            new PointF(rectangle.Left, rectangle.Bottom)
        };
    }
...