Отрисовка, позиционирование и клонирование изображений
Класс Image можно использовать для загрузки и отображения растровых изображений (растровых изображений) и векторных изображений (метафайлов). Для отображения изображения требуются объекты Graphics и Image . Объект Graphics предоставляет метод Graphics::D rawImage , который получает адрес объекта Image в качестве аргумента.
В следующем примере создается объект Image из файла Climber.jpg, а затем отображается изображение. Конечная точка для левого верхнего угла изображения (10, 10) указывается во втором и третьем параметрах метода Graphics::D rawImage .
Image myImage(L"Climber.jpg");
myGraphics.DrawImage(&myImage, 10, 10);
Приведенный выше код вместе с конкретным файлом, Climber.jpg, выводятся следующие выходные данные.
Объекты Image можно создавать из различных форматов графических файлов: BMP, GIF, JPEG, Exif, PNG, TIFF, WMF, EMF и ICON.
В следующем примере объекты Image создаются из файлов различных типов, а затем отображаются изображения.
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 , который можно использовать для создания копии существующего объекта Image, Metafile или Bitmap . Метод Clone перегружен в классе Bitmap , и один из вариантов имеет параметр source-rectangle, который можно использовать для указания части исходного изображения, которую требуется скопировать. В следующем примере создается объект Bitmap путем клонирования верхней половины существующего объекта 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, выводятся следующие выходные данные.