GDI+ 中的绘图、定位和克隆图像
可以使用 Bitmap 类来加载和显示光栅图像,并且可以使用 Metafile 类来加载和显示矢量图像。 Bitmap 和 Metafile 类继承自 Image 类。 若要显示矢量图像,需要 Graphics 类的实例和 Metafile。 若要显示光栅图像,需要 Graphics 类的实例和 Bitmap。 Graphics 类的实例提供 DrawImage 方法,该方法接收 Metafile 或 Bitmap 作为参数。
文件类型和克隆
下面的代码示例演示如何从文件 Climber.jpg 构造 Bitmap 并显示位图。 图像左上角(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)
下图显示了图像。
可以从各种图形文件格式构造 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)
下图显示了两个图像。