.NET3.5 GDI+ 图形操作5

简介: 前言: 本文章抄袭自本人刚刚买的《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.3 绘制简单图形

简单图形是组成复杂图形的基础,通过本小节的例子,读者可以掌握绘制复杂图形的基础。

除了直线外,矩形是所有简单图形的基础。因为在Windows操作系统中,大部分图形在内存中的表示都是矩形块,比如一个窗体、一个按钮控件等。即使是圆形的界面元素,在表示其位置时,仍然以所在矩形的左上角坐标为参照点,通过宽和高来框定其位置及其区域。

那么如何绘制矩形?Graphics中的DrawRectangle可以在规定一个左上角顶点和长宽边长的情况下绘制一个矩形。下面的代码实现生成一个400*300的图片,并画出一个矩形。

 

 

img_1c53668bcee393edac0d7b3b3daff1ae.gif img_405b18b4b6584ae338e0f6ecaf736533.gif Code
Pen pen = new Pen(Color.Red); // 创建一支红笔
Bitmap bmp = new Bitmap(400,300);
Graphics g 
= Graphics.FromImage(bmp);
// 以[50,50]为左上角,以长300,宽200绘制矩形
g.DrawRectangle(pen,new Rectangle(50,50,300,200));
pen.Dispose();
g.Dispose();
// 存为新图片
bmp.Save(Server.MapPath("~/aa.jpg"));
bmp.Dispose();

 

运行后,查看aa.jpg的效果如图。

 

 

 

如何绘制圆形呢?Graphics中的DrawDllipse可以在一个矩形范围内绘制椭圆,当把矩形设置为正方形时,就能画成为正圆,代码如下所示:

 

img_1c53668bcee393edac0d7b3b3daff1ae.gif img_405b18b4b6584ae338e0f6ecaf736533.gif Code
Pen pen = new Pen(Color.Red); // 创建一支红笔
Bitmap bmp = new Bitmap(400,400);
Graphics g 
= Graphics.FromImage(bmp);
// 以[50,50]为左上角,以长300,宽300的矩形内绘制圆
g.DrawEllipse(pen, new Rectangle(50,50,300,300));
pen.Dispose();
g.Dispose();
// 存为新图片
bmp.Save(Server.MapPath("~/bb.jpg"));
bmp.Dispose();

 

运行后,查看bb.jpg的效果如下图。

 

 

10.3.4 绘制文本

有时用户需要在图片上显示文字,Graphics中的DrawString可以在图形上绘制文字,其中可以指定坐标、字体、字号等信息。下面的代码简单地在图片上写了几个汉字。

 

img_1c53668bcee393edac0d7b3b3daff1ae.gif img_405b18b4b6584ae338e0f6ecaf736533.gif Code
Bitmap bmp = new Bitmap(200100);
Graphics g 
= Graphics.FromImage(bmp);
string str = "画在图片上的文字";
Font font 
= new Font("宋体"10);
// 黑色笔刷
SolidBrush brush = new SolidBrush(Color.Black);
g.DrawString(str, font, brush, 
5050); // 从[50,50]位置开始写字
font.Dispose();
brush.Dispose();
g.Dispose();
// 存为新图片
bmp.Save(Server.MapPath("~/text.jpg"));
bmp.Dispose();

 

运行后,text.jpg的效果如下图所示。

 

 

         注意:使用GDI+画上去的文字是二进制信息,无法作为文本复制粘贴

 

10.3.5 填充图形

前面的简单图形基本只有边界,内部区域是空心的。如果想绘制一个实心图形,可以使用Graphics中的FillXXX方法,并使用刷子(Brush对象)填充。

下面的代码示例实现用蓝色填充一个圆形区域。

 

img_1c53668bcee393edac0d7b3b3daff1ae.gif img_405b18b4b6584ae338e0f6ecaf736533.gif Code
Bitmap bmp = new Bitmap(300300);
Graphics g 
= Graphics.FromImage(bmp);
// 蓝色笔刷
SolidBrush brush = new SolidBrush(Color.Blue);
g.FillEllipse(brush, 
new Rectangle(5,5,250,250));
brush.Dispose();
g.Dispose();
// 存为新图片
bmp.Save(Server.MapPath("~/fill.jpg"));
bmp.Dispose();

运行后,查看fill.jpg的效果如图。

 

 

 

由此可见,利用Fill操作可以很方便地填充图形,如果需要使边界实出显示,可以再用Draw方法将边界绘制出来。

 

目录
相关文章
|
存储 C# 图形学
超全面的.NET GDI+图形图像编程教程
原文:超全面的.NET GDI+图形图像编程教程   本篇主题内容是.NET GDI+图形图像编程系列的教程,不要被这个滚动条吓到,为了查找方便,我没有分开写,上面加了目录了,而且很多都是源码和图片~ (*^_^*) 本人也为了学习深刻,另一方面也是为了分享给大家,纯手工码了好几天的字,喜欢的...
1107 0
|
图形学
基于Visual C++.NET的GDI+开发教程
GDI+接口是Microsoft Whistler操作系统中的一部分,它是GDI的一个新版本,不仅在GDI基础上添加许多新特性而且对原有的GDI功能进行优化。在为开发人员提供的二维矢量图形、文本、图像处理、区域、路径以及图形数据矩阵等方面构造了一系列相关的类,如Bitmap(位图类)、Brush(画刷类)、Color(颜色类)、Font(字体类)、Graphics(图形类)、Image(图像类)、Pen(画笔类)和Region(区域类)等。
1039 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
|
图形学 .NET 开发框架
.NET3.5 GDI+ 图形操作4
前言: 本文章抄袭自本人刚刚买的《ASP.NET 3.5从入门到精通》这本书,此书介绍在 http://www.china-pub.com/44991 ,本文章95%与此书的内容完全一样,另5%是我改正一些失误以后加上去的,该书原示例代码只能运行在IE核心的浏览器上,非IE核心浏览器上运行会出现些显示问题,本人更改了其中的一些代码。
805 0
|
Web App开发 .NET 图形学
.NET3.5 GDI+ 图形操作6(完)
前言: 本文章抄袭自本人刚刚买的《ASP.NET 3.5从入门到精通》这本书,此书介绍在 http://www.china-pub.com/44991 ,本文章95%与此书的内容完全一样,另5%是我改正一些失误以后加上去的,该书原示例代码只能运行在IE核心的浏览器上,非IE核心浏览器上运行会出现些显示问题,本人更改了其中的一些代码。
1061 0
|
API Windows
.Net程序开发中一个较为隐蔽的GDI泄露探析
  最近一直在调试第三方委托开发的医疗输液系统(我接手时,代码已经完成,原则上我只修改接口部分以适应我们的硬件即可,不过调试过程中,该程序本身问题暴露不少),该系统用VB.net开发,该软件的图形界面是花费n多银子专门做的美工,大量的贴图,就是目前的主流PC机配置,也很难在调试模式下走顺溜。
722 0
|
3月前
|
开发框架 前端开发 .NET
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
38 0