Сохранение внутри прямоугольника в картинке - PullRequest
0 голосов
/ 23 августа 2011

У меня есть что-то вроде этого - изображение загружается из файла в picturebox1:

enter image description here

, затем после нажатия кнопки «SelectArea» я могу нарисовать прямоугольник на загруженном изображении:

enter image description here

и, наконец, после нажатия другой кнопки 'SaveArea', я бы хотел сохранить img внутри созданного прямоугольника, поэтому в результате у меня будет изображение, сохраненное на моем диске, как этот:

enter image description here

Как написать код, который поможет мне сделать этот последний шаг -> сохранить внутри прямоугольника?

Tnx.

1 Ответ

1 голос
/ 23 августа 2011

Сначала создайте растровое изображение с правильными размерами

, затем вы создаете объект Graphics для этого с помощью Graphics.FromImage , а затем используете метод DrawImage в результирующем объекте Graphics, чтобы нарисовать часть вашего большого изображения на растровое изображение.

Наконец, сохраните растровый объект с помощью Save:

public static void SaveBitmapPart(System.Drawing.Image image, System.Drawing.RectangleF sourceRect, string pathToSave )
{
    using (var bmp = new System.Drawing.Bitmap((int)sourceRect.Width, (int)sourceRect.Height))
    {
        using (var graphics = System.Drawing.Graphics.FromImage(bmp))
        {
            graphics.DrawImage(image, 0.0f, 0.0f, sourceRect, System.Drawing.GraphicsUnit.Pixel);
        }
        bmp.Save(pathToSave);
    }
}

просто назовите его с:

SaveBitmapPart(picturebox1.Image, myRectangle, @"c:\Temp\Test.bmp");
...