.NET Compact Framework 不支持 Image.Clone 方法,可是仍能够复制图像和图像的某些部分。以下的演示例子演示怎样运行以下操作:
-
定义一个方法以创建位图。
-
定义一个重载方法以复制位图或位图的一部分。
-
通过重写窗口的 OnPaint 方法来调用这些方法并向屏幕绘制图像。
创建位图
-
此方法创建一个位图以进行演示。
// Creates a bitmap for copying. private Bitmap CreateBitmap(int sideSize) { Bitmap bmp = new Bitmap(sideSize, sideSize); Graphics g = Graphics.FromImage(bmp); g.FillEllipse(new SolidBrush(Color.Red), 0, 0, sideSize, sideSize); g.DrawLine(new Pen(Color.Black), 0, 0, sideSize, sideSize); g.DrawLine(new Pen(Color.Black), sideSize, 0, 0, sideSize); g.Dispose(); return bmp; }
克隆位图
-
此方法重载採用源位图作为參数并将该位图作为副本返回。
复制位图的一部分
-
此方法重载採用 Rectangle 作为參数以确定要返回的位图部分的尺寸。
创建、复制和绘制位图
-
此 OnPaint 方法重载调用方法创建一个位图,然后克隆并复制该位图的一部分。此方法也能够将克隆的位图保存到一个文件里。
// Draws the bitmaps on the form. protected override void OnPaint(PaintEventArgs e) { Font arialFont; Brush blackBrush; arialFont = new Font("Arial", 10, FontStyle.Regular); blackBrush = new SolidBrush(Color.Black); // Set the size of the sides of the bitmap, // and get one-third of it for the center bitmap. int sidesize = 75; int third = (int) sidesize/3; // Create bitmap. source = CreateBitmap(sidesize); // Copy entirely as a clone. clone = CopyBitmap(source); // Copy the center part of the bitmap. center = CopyBitmap(source, new Rectangle(third, third, third, third)); // Save the bitmap to a file. clone.Save("newbitmap.bmp", ImageFormat.Bmp); // Draw the source, clone, and partial // bitmaps vertically down the screen. int y = 10; e.Graphics.DrawString("source bitmap:", arialFont, blackBrush, 10, y); y += 20; e.Graphics.DrawImage(source, 10, y); y += source.Height + 10; e.Graphics.DrawString("clone bitmap:", arialFont, blackBrush, 10, y); y += 20; e.Graphics.DrawImage(clone, 10, y); y += clone.Height + 10; e.Graphics.DrawString("center part of bitmap:", arialFont, blackBrush, 10, y); y += 20; e.Graphics.DrawImage(center, 10, y); y += center.Height + 10; // Dispose graphic objects. arialFont.Dispose(); blackBrush.Dispose(); }