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.
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.