Поделиться через


Рисование, размещение и клонирование изображений

Класс Image можно использовать для загрузки и отображения растровых изображений (растровых изображений) и векторных изображений (метафайлов). Для отображения изображения требуется объект графического и объект Image. Объект Graphics предоставляет метод Graphics::DrawImage, который получает адрес объекта Image в качестве аргумента.

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

Image myImage(L"Climber.jpg");
myGraphics.DrawImage(&myImage, 10, 10);

Предыдущий код, а также конкретный файл, Climber.jpg, создал следующие выходные данные.

снимок экрана окна, содержащего фотографию

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

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

Image myBMP(L"SpaceCadet.bmp");
Image myEMF(L"Metafile1.emf");
Image myGIF(L"Soda.gif");
Image myJPEG(L"Mango.jpg");
Image myPNG(L"Flowers.png");
Image myTIFF(L"MS.tif");

myGraphics.DrawImage(&myBMP, 10, 10);
myGraphics.DrawImage(&myEMF, 220, 10);
myGraphics.DrawImage(&myGIF, 320, 10);
myGraphics.DrawImage(&myJPEG, 380, 10);
myGraphics.DrawImage(&myPNG, 150, 200);
myGraphics.DrawImage(&myTIFF, 300, 200);

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

Bitmap* originalBitmap = new Bitmap(L"Spiral.png");
RectF sourceRect(
   0.0f,
   0.0f, 
   (REAL)(originalBitmap->GetWidth()), 
   (REAL)(originalBitmap->GetHeight())/2.0f);

Bitmap* secondBitmap = originalBitmap->Clone(sourceRect, PixelFormatDontCare);

myGraphics.DrawImage(originalBitmap, 10, 10);
myGraphics.DrawImage(secondBitmap, 100, 10);

Предыдущий код, а также конкретный файл, Spiral.png, создал следующие выходные данные.

иллюстрация изображения, а затем верхняя половина оригинального изображения