Как вы копируете из прямоугольной исходной области в непрямоугольную / непараллелограммовую область назначения в .NET? - PullRequest
0 голосов
/ 01 декабря 2008

Я знаю, как использовать метод DrawImage () объекта Graphics для копирования из прямоугольной исходной области в прямоугольную область назначения и как копировать в область паралеллограммы, определенную массивом Point [] из трех элементов.

Можно ли в .NET копировать из прямоугольной исходной области в 4-стороннюю непрямоугольную область назначения (которая определяется четырьмя произвольными точками)?

Обновление . Вот пример кода, который копирует изображение в область параллелограмма:

using (Graphic g = this.CreateGraphics())
{
    List<Point> pts = new List<Point>();
    pts.Add(new Point(0, 0));
    pts.Add(new Point(100, 0));
    pts.Add(new Point(10, 100));
    g.DrawImage(pbSource.Image, pts.ToArray());
}

Если я добавлю четвертую точку, я получу исключение «Не реализовано».

Обновление 2 . можно сделать это полностью в .NET:

альтернативный текст http://www.freeimagehosting.net/uploads/a770d1e97f.jpg

но вы должны сделать это сами, попиксельно. Графика предоставлена ​​ Джонбертом .

Ответы [ 2 ]

1 голос
/ 01 декабря 2008

Насколько я могу судить, в .NET нет простого (встроенного) способа преобразования изображений такого типа.

Если вы посмотрите на Преобразование псевдонимов (Aaform) в кодпроекте, вы можете скачать его пример, в котором есть чистая реализация концепции vb (а также пример vb и c ++) .

Существует также Anti-Grain Geometry , бесплатная (для некоммерческого использования) графическая библиотека c ++ и оболочка c # .

Надеюсь, это поможет.

0 голосов
/ 02 декабря 2008

Это можно сделать полностью в .NET:

альтернативный текст http://www.freeimagehosting.net/uploads/a770d1e97f.jpg

но вы должны сделать это сами, попиксельно. Графика предоставлена ​​ Джонбертом .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...