Zeichnen, Positionieren und Klonen von Bildern

Sie können die Image-Klasse verwenden, um Rasterbilder (Bitmaps) und Vektorbilder (Metadateien) zu laden und anzuzeigen. Zum Anzeigen eines Bilds benötigen Sie ein Graphics-Objekt und ein Image-Objekt . Das Graphics-Objekt stellt die Graphics::D rawImage-Methode bereit, die die Adresse des Image-Objekts als Argument empfängt.

Im folgenden Beispiel wird ein Image-Objekt aus der Datei Climber.jpg erstellt und anschließend das Bild angezeigt. Der Zielpunkt für die obere linke Ecke des Bilds (10, 10) wird im zweiten und dritten Parameter der Graphics::D rawImage-Methode angegeben.

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

Der vorangehende Code hat zusammen mit einer bestimmten Datei Climber.jpg die folgende Ausgabe erzeugt.

Screenshot eines Fensters mit einem Foto

Sie können Bildobjekte aus einer Vielzahl von Grafikdateiformaten erstellen: BMP, GIF, JPEG, Exif, PNG, TIFF, WMF, EMF und ICON.

Im folgenden Beispiel werden Image-Objekte aus einer Vielzahl von Dateitypen erstellt und dann die Bilder angezeigt.

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);

Die Image-Klasse stellt eine Image::Clone-Methode bereit, mit der Sie eine Kopie eines vorhandenen Image-, Metafile- oder Bitmap-Objekts erstellen können. Die Clone-Methode wird in der Bitmap-Klasse überladen, und eine der Variationen verfügt über einen Source-Rectangle-Parameter, mit dem Sie den Teil des ursprünglichen Bilds angeben können, den Sie kopieren möchten. Im folgenden Beispiel wird ein Bitmap-Objekt erstellt, indem die obere Hälfte eines vorhandenen Bitmap-Objekts geklont wird. Anschließend werden beide Bilder angezeigt.

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);

Der vorangehende Code hat zusammen mit einer bestimmten Datei Spiral.png die folgende Ausgabe erzeugt.

Abbildung eines Bilds, gefolgt von der oberen Hälfte des Bilds