-
csharp .net vb 复制图像
.NET Compact Framework 不支持 Image.Clone 方法,可是仍能够复制图像和图像的某些部分。以下的演示例子演示怎样运行以下操作:
-
定义一个方法以创建位图。
-
定义一个重载方法以复制位图或位图的一部分。
-
通过重写窗口的 OnPaint 方法来调用这些方法并向屏幕绘制图像。
创建位图
-
此方法创建一个位图以进行演示。
C#
VB
// 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#
VB
// Copies the entire bitmap. protected Bitmap CopyBitmap(Bitmap source) { return new Bitmap(source); }
复制位图的一部分
-
此方法重载採用 Rectangle 作为參数以确定要返回的位图部分的尺寸。
C#
VB
// 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; }
创建、复制和绘制位图
-
此 OnPaint 方法重载调用方法创建一个位图,然后克隆并复制该位图的一部分。此方法也能够将克隆的位图保存到一个文件里。
C#
VB
// 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(); }
编译代码
此演示例子须要引用以下的命名空间:
-
System
-
System.Drawing
-
System.Drawing.Imaging
-
System.Windows.Forms
可靠编程
注意,Font 和 Brush 对象在 OnPaint 方法重载中显式释放。由 PaintEventArgs 对象的 Graphics 属性返回的 Graphics 对象将由垃圾回收器销毁,不须要显式释放。
出处:https://www.cnblogs.com/mfryf/p/3622331.html
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式