Отрисовка, позиционирование и клонирование изображений в GDI+

Класс Bitmap можно использовать для загрузки и отображения растровых изображений, а класс Metafile — для загрузки и отображения векторных изображений. Классы Bitmap и Metafile наследуются от класса Image. Для отображения векторного изображения требуется экземпляр класса Graphics и Metafile. Для отображения растрового изображения требуется экземпляр класса Graphics и Bitmap. Экземпляр класса Graphics предоставляет метод DrawImage, который получает в качестве аргумента Metafile или Bitmap.

Типы файлов и клонирование

В следующем примере кода показано, как создать Bitmap из файла Climber.jpg и отобразить растровое изображение. Координаты целевой точки для левого верхнего угла изображения (10, 10) указывается во втором и третьем параметрах.

Bitmap myBitmap = new Bitmap("Climber.jpg");
myGraphics.DrawImage(myBitmap, 10, 10);
Dim myBitmap As New Bitmap("Climber.jpg")
myGraphics.DrawImage(myBitmap, 10, 10)

На рисунке ниже показано изображение.

Image Sample

Объекты Bitmap можно создавать из различных форматов графических файлов: BMP, GIF, JPEG, EXIF, PNG, TIFF и ICON.

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

Bitmap myBMP = new Bitmap("SpaceCadet.bmp");
Bitmap myGIF = new Bitmap("Soda.gif");
Bitmap myJPEG = new Bitmap("Mango.jpg");
Bitmap myPNG = new Bitmap("Flowers.png");
Bitmap myTIFF = new Bitmap("MS.tif");

myGraphics.DrawImage(myBMP, 10, 10);
myGraphics.DrawImage(myGIF, 220, 10);
myGraphics.DrawImage(myJPEG, 280, 10);
myGraphics.DrawImage(myPNG, 150, 200);
myGraphics.DrawImage(myTIFF, 300, 200);
Dim myBMP As New Bitmap("SpaceCadet.bmp")
Dim myGIF As New Bitmap("Soda.gif")
Dim myJPEG As New Bitmap("Mango.jpg")
Dim myPNG As New Bitmap("Flowers.png")
Dim myTIFF As New Bitmap("MS.tif")

myGraphics.DrawImage(myBMP, 10, 10)
myGraphics.DrawImage(myGIF, 220, 10)
myGraphics.DrawImage(myJPEG, 280, 10)
myGraphics.DrawImage(myPNG, 150, 200)
myGraphics.DrawImage(myTIFF, 300, 200)

Класс Bitmap предоставляет метод Clone, который можно использовать для создания копии существующего Bitmap. Метод Clone имеет параметр исходного прямоугольника, который можно использовать для указания копируемой части исходного растрового изображения. В следующем примере кода показано, как создать Bitmap, клонируя верхнюю половину существующего Bitmap. Затем оба изображения будут нарисованы.

Bitmap originalBitmap = new Bitmap("Spiral.png");
Rectangle sourceRectangle = new Rectangle(0, 0, originalBitmap.Width,
   originalBitmap.Height / 2);

Bitmap secondBitmap = originalBitmap.Clone(sourceRectangle,
   PixelFormat.DontCare);

myGraphics.DrawImage(originalBitmap, 10, 10);
myGraphics.DrawImage(secondBitmap, 150, 10);
Dim originalBitmap As New Bitmap("Spiral.png")
Dim sourceRectangle As New Rectangle(0, 0, originalBitmap.Width, _
   CType(originalBitmap.Height / 2, Integer))

Dim secondBitmap As Bitmap = originalBitmap.Clone(sourceRectangle, _
   PixelFormat.DontCare)

myGraphics.DrawImage(originalBitmap, 10, 10)
myGraphics.DrawImage(secondBitmap, 150, 10)

На следующем рисунке показаны два новых изображения.

Cropping

См. также