在 GDI+ 中绘制、定位和克隆图像

可以使用 Bitmap 类加载和显示光栅图像,还可利用 Metafile 类加载和显示矢量图像。 Bitmap 类和 Metafile 类从 Image 类继承。 若要显示矢量图像,需要 Graphics 类的实例和 Metafile。 若要显示光栅图像,则需要 Graphics 类的实例和 BitmapGraphics 类的实例提供了 DrawImage 方法,该方法接收 MetafileBitmap 作为参数。

文件类型和克隆

下面的代码示例演示如何用文件 Climber.jpg 构造 Bitmap,并显示位图。 图像左上角的目标点 (10,10) 在第二个和第三个参数中指定。

        Dim myBitmap As New Bitmap("Climber.jpg")
        myGraphics.DrawImage(myBitmap, 10, 10)

Bitmap myBitmap = new Bitmap("Climber.jpg");
myGraphics.DrawImage(myBitmap, 10, 10);

下面的插图显示了该图像。

图像示例

可以用各种图形文件格式(BMP、GIF、JPEG、EXIF、PNG、TIFF 和 ICON)构造 Bitmap 对象。

下面的代码示例演示如何使用各种文件类型构造 Bitmap 对象,并显示位图。

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

Bitmap 类提供了 Clone 方法,可用于制作现有 Bitmap 的副本。 Clone 方法带有源矩形参数,可用于指定要复制的原始位图的部分。 下面的代码示例演示如何利用克隆现有 Bitmap 的上半部创建 Bitmap。 然后绘制两幅图像。

        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)

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

下面的插图显示这两幅图像。

裁剪

请参见

任务

如何:创建用于绘制的 Graphics 对象

其他资源

图像、位图和图元文件

使用图像、位图、图标和图元文件