.NET3.5 GDI+ 图形操作4

简介: 前言: 本文章抄袭自本人刚刚买的《ASP.NET 3.5从入门到精通》这本书,此书介绍在 http://www.china-pub.com/44991 ,本文章95%与此书的内容完全一样,另5%是我改正一些失误以后加上去的,该书原示例代码只能运行在IE核心的浏览器上,非IE核心浏览器上运行会出现些显示问题,本人更改了其中的一些代码。

      前言: 本文章抄袭自本人刚刚买的《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图形创建图形对象,可以使用如下代码:

 

Bitmap bmp  =   new  Bitmap(Server.MapPath( " ~/mm.jpg " ));
Graphics g 
=  Graphics.FromImage(bmp);
bmp.Dispose();
g.Dispose();

 


 

 

注意:这里要求图片必须存在,相当于对图片的修改操作,否则将不能创建Bitmap对象,也就无法创建图形对象了。另外,Bitmap对象和图形对象都是非常耗费计算机内存的,所以要及时调用Dispose方法释放占用资源。

 

 

当然,也可以在内存中新建Bitmap对象,对其绘制完毕后再保存到硬盘上或直接输入到HTTP流中发回客户端显示。比如在内存中创建一个200+100的图像,代码如下:

 

Bitmap bmp = new Bitmap(200,100);
Graphics g 
= Graphics.FromImage(bmp);
bmp.Dispose();
g.Dispose();

 

如果要新创建一个图像,则用这种方法是最好的。

 

 

 

10.3.2 绘制直线

绘制直线一般使用Graphics对象的DrawLine方法。下面的代码在mm.jpg图片上用红色线条斜画一条直线。

 

img_1c53668bcee393edac0d7b3b3daff1ae.gif img_405b18b4b6584ae338e0f6ecaf736533.gif Code
Pen pen = new Pen(Color.Red); // 创建一支红笔
Bitmap bmp = new Bitmap(Server.MapPath("~/mm.jpg"));
Graphics g 
= Graphics.FromImage(bmp);
g.DrawLine(pen, 
00200200); // 从[0,0]到[200,200]画直线
pen.Dispose();
g.Dispose();
// 存为新图片
bmp.Save(Server.MapPath("~/mm2.jpg"));
bmp.Dispose();

 

 

代码说明:

bmp.Save: Image对象保存到磁盘。Graphics对象并非直接在原图上画直线,而是在内存中操作Image对象,所以需要另存为mm2.jpg才能看出效果。

程序运行后,查看mm2.jpg文件就可以看到效果了,如下图:

 

目录
相关文章
|
图形学
VB.NET中用GDI+画饼图
Public Class Form1    Private Const Pi As Single = 3.1415926     Private Sub Button1_Click(ByVal sender As System.
735 0
|
存储 图形学 Windows
.NET3.5 GDI+ 图形操作1
前言: 本文章抄袭自本人刚刚买的《ASP.NET 3.5从入门到精通》这本书,此书介绍在 http://www.china-pub.com/44991 ,本文章95%与此书的内容完全一样,另5%是我改正一些失误以后加上去的,该书原示例代码只能运行在IE核心的浏览器上,非IE核心浏览器上运行会出现些显示问题,本人更改了其中的一些代码。
1086 0
|
.NET 开发框架 Windows
.NET3.5 GDI+ 图形操作2
前言: 本文章抄袭自本人刚刚买的《ASP.NET 3.5从入门到精通》这本书,此书介绍在 http://www.china-pub.com/44991 ,本文章95%与此书的内容完全一样,另5%是我改正一些失误以后加上去的,该书原示例代码只能运行在IE核心的浏览器上,非IE核心浏览器上运行会出现些显示问题,本人更改了其中的一些代码。
780 0
|
Web App开发
.NET3.5 GDI+ 图形操作3
前言: 本文章抄袭自本人刚刚买的《ASP.NET 3.5从入门到精通》这本书,此书介绍在 http://www.china-pub.com/44991 ,本文章95%与此书的内容完全一样,另5%是我改正一些失误以后加上去的,该书原示例代码只能运行在IE核心的浏览器上,非IE核心浏览器上运行会出现些显示问题,本人更改了其中的一些代码。
814 0
|
图形学
.NET3.5 GDI+ 图形操作5
前言: 本文章抄袭自本人刚刚买的《ASP.NET 3.5从入门到精通》这本书,此书介绍在 http://www.china-pub.com/44991 ,本文章95%与此书的内容完全一样,另5%是我改正一些失误以后加上去的,该书原示例代码只能运行在IE核心的浏览器上,非IE核心浏览器上运行会出现些显示问题,本人更改了其中的一些代码。
994 0
|
API Windows
.Net程序开发中一个较为隐蔽的GDI泄露探析
  最近一直在调试第三方委托开发的医疗输液系统(我接手时,代码已经完成,原则上我只修改接口部分以适应我们的硬件即可,不过调试过程中,该程序本身问题暴露不少),该系统用VB.net开发,该软件的图形界面是花费n多银子专门做的美工,大量的贴图,就是目前的主流PC机配置,也很难在调试模式下走顺溜。
722 0
|
4月前
|
开发框架 前端开发 .NET
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
45 0
|
11天前
|
开发框架 前端开发 JavaScript
JavaScript云LIS系统源码ASP.NET CORE 3.1 MVC + SQLserver + Redis医院实验室信息系统源码 医院云LIS系统源码
实验室信息系统(Laboratory Information System,缩写LIS)是一类用来处理实验室过程信息的软件,云LIS系统围绕临床,云LIS系统将与云HIS系统建立起高度的业务整合,以体现“以病人为中心”的设计理念,优化就诊流程,方便患者就医。
18 0
|
2月前
|
开发框架 前端开发 .NET
进入ASP .net mvc的世界
进入ASP .net mvc的世界
32 0