DrawImage для преобразования изображений в C#

Примеры изображения Warp произвольно в C#, часть 1 и Изображения Warp произвольно в C#, часть 2 показать, как использовать обратные преобразования для деформации изображений произвольно. Метод Graphics класса DrawImage также позволяет вам преобразовывать изображения. Это не так гибко, но это намного проще.

Метод DrawImage имеет 30 различных перегруженных версий. Один из них принимает в качестве параметров три точки, которые представляют, где в рутине должны отображаться верхние левые, верхние правые и нижние левые углы исходного изображения. Метод определяет, где поставить четвертый угол, чтобы сделать полученную фигуру параллелограммом. Вы можете использовать эту версию DrawImage для преобразования изображений.

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

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

private void Form1_Load(object sender, EventArgs e)
{
    // Получить исходное растровое изображение.
    Bitmap bm_source = new Bitmap(picSource.Image);

    // Создаем массив точек, определяющих
    // преобразуем углы изображения.
    int wid = bm_source.Width;
    int hgt = bm_source.Height;
    PointF[] corners = 
    {
        new PointF(wid * 0.5f, 0),
        new PointF(0, hgt * 0.4f),
        new PointF(wid, hgt * 0.6f)
    };

    // Создаем растровое изображение для результата.
    Bitmap bm_dest = new Bitmap(
        (int)bm_source.Width,
        (int)bm_source.Height);

    // Создаем объект Graphics для результата Bitmap.
    using (Graphics gr_dest = Graphics.FromImage(bm_dest))
    {
        // Скопируем исходное изображение в растровое изображение адресата.
        gr_dest.DrawImage(bm_source, corners);

        // Отображение результата.
        picDest.Image = bm_dest;
    }
}

Источник: http://csharphelper.com/blog/2016/08/use-drawimage-to-warp-images-in-c/

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Adblock
detector