.NET3.5 GDI+ 图形操作4
前言: 本文章抄袭自本人刚刚买的《ASP.NET 3.5从入门到精通》这本书,此书介绍在 http://www.china-pub.com/44991 ,本文章95%与此书的内容完全一样,另5%是我改正一些失误以后加上去的,该书原示例代码只能运行在IE核心的浏览器上,非IE核心浏览器上运行会出现些显示问题,本人更改了其中的一些代码。本文章经历昨晚本人五个小时的手打而成(且还未打完,下班回去继续打,想不到我的打字速度退化得这么快,郁闷!!!),俗话说:好记性不如烂笔头,把书的内容手打出来,对手,对脑,都有好处!!!
10.3 基本绘图
在.NET中图形包括以下两个步骤。
第一,创建Graphics对象。
第二,使用Graphics对象绘制线条和形状,呈现文本或显示操作图像。
由此可见,如何创建Graphics对象是首先要解决的问题。本节将讲述如何绘制直线、矩形、圆等基本图形,然后基本图形构成复杂的图形。Graphics常用的绘图方法如下表。

10.3.1 创建图形对象
创建图形对象可有如下几种方法。
² 在窗体或控件的Paint事件中接收对图形对象的引用,作为PaintEventArgs的一部分。在为控件创建绘制代码时,通常使用此方法来获取对图形对象的引用。
² 调用某控件或窗体的CreateGraphics方法,以获取对Graphics对象的引用,该对象表示该控件或窗体的绘图图面。如果想在已存在的窗体或控件上绘图,可使用此方法。
² 由从Image继承的任何对象创建Graphics对象。此方法一般用来生成图片。
就ASP.NET Web应用程序而言,前两种是无法做到的,因此只能采用第三种方法。
假设要从网站根目录mm.jpg图形创建图形对象,可以使用如下代码:
Graphics g = Graphics.FromImage(bmp);
bmp.Dispose();
g.Dispose();
注意:这里要求图片必须存在,相当于对图片的修改操作,否则将不能创建Bitmap对象,也就无法创建图形对象了。另外,Bitmap对象和图形对象都是非常耗费计算机内存的,所以要及时调用Dispose方法释放占用资源。
当然,也可以在内存中新建Bitmap对象,对其绘制完毕后再保存到硬盘上或直接输入到HTTP流中发回客户端显示。比如在内存中创建一个200+100的图像,代码如下:
Graphics g = Graphics.FromImage(bmp);
bmp.Dispose();
g.Dispose();
如果要新创建一个图像,则用这种方法是最好的。
10.3.2 绘制直线
绘制直线一般使用Graphics对象的DrawLine方法。下面的代码在mm.jpg图片上用红色线条斜画一条直线。

代码说明:
bmp.Save: 将Image对象保存到磁盘。Graphics对象并非直接在原图上画直线,而是在内存中操作Image对象,所以需要另存为mm2.jpg才能看出效果。
程序运行后,查看mm2.jpg文件就可以看到效果了,如下图:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具