2012-03-08 2 views
11

Я пытаюсь написать класс утилиты, который позволяет автоматически изменять размер изображений, которые являются черепицей. Скажем, есть srcBitmap, откуда я копирую область, заданную Rectangle srcRegion. Затем я хочу вставить (информацию о пикселях) эту область в другое изображение, называемое Bitmap destBitmap, в области назначения Rectangle destRegion. Я знаю, как получить регион от источника и поместить его в объект Bitmap, но я еще не смог найти, как на самом деле вставить объект Bitmap в определенном регионе, внутри другого, большего объекта Bitmap.C# copy paste область изображения в другое изображение

Есть ли быстрый способ сделать это? (без GDI и без вникания в массив байтов битмапов). Вот фрагмент кода, который должен прояснить моя цель

private static void CopyRegionIntoImage(Bitmap srcBitmap, Rectangle srcRegion, Bitmap destBitmap, Rectangle destRegion) 
    { 
     // get the required region from the destination 
     Bitmap region = Copy(srcBitmap, srcRegion); 
    } 
+2

Вы уже используете GDI + с классом Bitmap. – dvdvorle

+0

Спасибо! Я предполагаю, что в .NET Framework есть обертки вокруг этой библиотеки. не знал об этом, C# и dotNet не мой хлеб и масло. – teodron

ответ

19

Используйте это:

public static void CopyRegionIntoImage(Bitmap srcBitmap, Rectangle srcRegion,ref Bitmap destBitmap, Rectangle destRegion) 
    { 
     using (Graphics grD = Graphics.FromImage(destBitmap))    
     { 
      grD.DrawImage(srcBitmap, destRegion, srcRegion, GraphicsUnit.Pixel);     
     } 
    } 
+2

А, ты был быстрее и лучше. Не видел, что перегрузка xD – dvdvorle

+0

Спасибо, я тоже не знал о перегрузке! Надеюсь, это поможет другим людям. С наилучшими пожеланиями! – teodron

+0

+1, добро пожаловать –