.NET Compact Framework 不支持 方法,可是仍能够复制图像和图像的某些部分。以下的演示例子演示怎样运行以下操作:
-
定义一个方法以创建位图。
-
定义一个重载方法以复制位图或位图的一部分。
-
通过重写窗口的 方法来调用这些方法并向屏幕绘制图像。
创建位图
-
此方法创建一个位图以进行演示。
C#
// 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;}
克隆位图
-
此方法重载採用源位图作为參数并将该位图作为副本返回。
C#
// Copies the entire bitmap.protected Bitmap CopyBitmap(Bitmap source){ return new Bitmap(source);}
复制位图的一部分
-
此方法重载採用 作为參数以确定要返回的位图部分的尺寸。
C#
// Copies a part of a bitmap.protected Bitmap CopyBitmap(Bitmap source, Rectangle part){ Bitmap bmp = new Bitmap(part.Width, part.Height); Graphics g = Graphics.FromImage(bmp); g.DrawImage(source,0,0,part,GraphicsUnit.Pixel); g.Dispose(); return bmp;}
创建、复制和绘制位图
-
此 方法重载调用方法创建一个位图,然后克隆并复制该位图的一部分。此方法也能够将克隆的位图保存到一个文件里。
C#
// 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();}
此演示例子须要引用以下的命名空间:
注意, 和 对象在 方法重载中显式释放。由 对象的 属性返回的 对象将由垃圾回收器销毁,不须要显式释放。