在 GDI+ 中繪製、定位和複製影像

您可以使用 類別 Bitmap 來載入和顯示點陣影像,而您可以使用 Metafile 類別來載入和顯示向量影像。 BitmapMetafile 類別繼承自 Image 類別。 若要顯示向量影像,您需要 類別的 Graphics 實例和 Metafile 。 若要顯示點陣影像,您需要 類別的 Graphics 實例和 Bitmap 。 類別的 Graphics 實例會提供 DrawImage 方法,這個方法會 Metafile 接收 或 Bitmap 作為引數。

檔案類型和複製

下列程式碼範例示範如何從檔案 Climber.jpg 建構 Bitmap ,並顯示點陣圖。 影像左上角 (10, 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

另請參閱