本实例将使用Graphics类绘制五种图形来分别演示SolidBrush、HatchBrush、TextureBrush、LinearGradientBrush、PathGradientBrush这五种画笔的效果,然后将这五种图形输出的网页页面中。

程序实现的主要步骤为:

(1)新建一个网站并创建Default.aspx页面并打开Default.aspx.cs后台代码文件。

(2)在Default.aspx.cs代码的Page_Load中定义一个画布类,然后通过创建不同的实现类来实现不同的图形,代码如下:

  protectedvoid Page_Load(object sender, EventArgs e)

  {

  Bitmap bitmap = newBitmap(, );//建立位图文件

  Graphics gra = Graphics.FromImage(bitmap);//设置画布,与bmap关联

       gra.Clear(Color.White);//设置背景为白色

  SolidBrush solidBrush = newSolidBrush(Color.Blue);//定义单色填充画笔

  //使用单色填充画笔,填充矩形内部

       gra.FillRectangle(solidBrush, newRectangle(, , , ));

  //定义具有阴影样式、前景色以及背景色的画笔

  HatchBrush hatchBrush =

  newHatchBrush(HatchStyle.Horizontal, Color.Red, Color.FromArgb(, , ));

  //使用阴影样式画笔,填充椭圆形内部

       gra.FillEllipse(hatchBrush, newRectangle(, , , ));

  //加载指定的图片

       System.Drawing.Image image =

  System.Drawing.Image.FromFile(Server.MapPath("image/Chrysanthemum.jpg"));

  //通过指定的图像定义填充画笔

  TextureBrush textureBrush = newTextureBrush(image);

  //使用图像填充画笔,填充菱形内部

       gra.FillPolygon(textureBrush, newPoint[] { newPoint(, ), newPoint(, ),

  newPoint(, ), newPoint(, ) });

  //定义线性渐变画笔,并制定了渐变区域以及渐变颜色

  LinearGradientBrush linearGradientBrush = newLinearGradientBrush(newPoint(, ), newPoint(, ), Color.Red, Color.Yellow);

  //使用线性渐变填充画笔,填充矩形内部

       gra.FillRectangle(linearGradientBrush, newRectangle(, , , ));

  GraphicsPath graphicsPath = newGraphicsPath();//定义相互连接的直线对象

       graphicsPath.AddLine(, , , );//定义顶部水平直线

       graphicsPath.AddLine(, , , );//定义右侧垂直直线

       graphicsPath.AddLine(, , , );//定义底部水平直线

       graphicsPath.CloseFigure();//关闭并使用直线连接结束点与开始点

  //定义用于填充GraphicsPath对象内部的渐变画笔

  PathGradientBrush pathGradientBrush = newPathGradientBrush(graphicsPath);

  //设置路径渐变的中心处颜色

       pathGradientBrush.CenterColor = Color.White;

  //定义渐变颜色

       pathGradientBrush.SurroundColors = newColor[] { Color.Green, Color.Blue };

  //将带有渐变颜色的形状,填充到矩形内部

       gra.FillRectangle(pathGradientBrush, newRectangle(, , , ));

       Response.ContentType = "image/jpeg";//声明响应输出流为jpeg图片

       bitmap.Save(Response.OutputStream, ImageFormat.Jpeg);//将位图输出到响应流

  //释放各类使用的资源

       bitmap.Dispose();

       gra.Dispose();

       solidBrush.Dispose();

       hatchBrush.Dispose();

       image.Dispose();

       textureBrush.Dispose();

       linearGradientBrush.Dispose();

       graphicsPath.Dispose();

       pathGradientBrush.Dispose();

   }

(3)在使用TextureBrush类实现绘制图形时,用到了一张图片文件,所以接着在项目上创建一个image文件夹,然后复制一个jpg类型的图片文件并命名为Chrysanthemum.jpg。

执行程序,运行结果如图11.3所示。

图11.3 Brush对象五种图形的显示效果

实现Brush对象的五种图形的更多相关文章

  1. Java中创建(实例化)对象的五种方式

    Java中创建(实例化)对象的五种方式1.用new语句创建对象,这是最常见的创建对象的方法. 2.通过工厂方法返回对象,如:String str = String.valueOf(23); 3.运用反 ...

  2. javaScript中定义类或对象的五种方式

    第一种方式: 工厂方法 能创建并返回特定类型的对象的工厂函数(factory function). function createCar(sColor){ var oTempCar = new Obj ...

  3. 反射----获取class对象的五种方法

    反射Reflection 配合注解使用会格外强大,反射注解,天生一对 类如何加载? 动态语言和静态语言.我知道是什么,不用总结了. 由于反射,Java可以称为准动态语言. 允许通过反射获得类的全部信息 ...

  4. java实例化对象的五种方法

    1.用new语句创建对象,这是最常见的创建对象的方法. 2.通过工厂方法返回对象,如:String str = String.valueOf(23); 3.运用反射手段,调用java.lang.Cla ...

  5. TP6.0 获取请求对象的五种方式

    目录 1. 门面类 2. 依赖注入 3. 框架提供的基础控制器的 request 属性 4. request() 助手函数 5. app() 超级助手函数 think\Request.think\fa ...

  6. 【Java基础】Java创建对象的五种方式

    Java中创建(实例化)对象的五种方式 1.用new语句直接创建对象,这是最常见的创建对象的方法. 2.通过工厂方法返回对象,如:String str = String.valueOf(23); 3. ...

  7. js对象之间的"继承"的五种方法

    今天要介绍的是,对象之间的"继承"的五种方法. 比如,现在有一个"动物"对象的构造函数. function Animal(){ this.species = & ...

  8. java:JavaScript2:(setTimeout定时器,history.go()前进/后退,navigator.userAgent判断浏览器,location.href,五种方法获取标签属性,setAttribute,innerHTML,三种方法获取form表单信息,JS表单验证,DOM对象,form表单操作)

    1.open,setTimeout,setInterval,clearInterval,clearTimeout <!DOCTYPE> <html> <head> ...

  9. NSNotification,NSNotificationCenter的使用、iOS中五种对象间传值的方式

    学习内容 NSNitification与NotificationCenter(通知与通知中心) 通知的使用 [[NSNotificationCenter defaultCenter]addObserv ...

随机推荐

  1. Linux常用解压缩命令

    压 缩:tar -jcv -f filename.tar.bz2 要被压缩的文件或目录名称 查 询:tar -jtv -f filename.tar.bz2 解压缩:tar -jxv -f filen ...

  2. webstorm下ES6转ES5

    ECMAScript 6是JavaScript语言的下一代标准,已经在2015年6月正式发布了.Mozilla公司将在这个标准的基础上,推出JavaScript 2.0. ES6的目标,是使得Java ...

  3. 第六节:pandas函数应用

    1.pipe() :表格函数应用: 2.apply():表格行列函数应用: 3.applymap():表格元素应用.

  4. debian 7 安装

    1. 从 live cd 或者 dvd 进行安装,官方文档已经够用,可以将 live cd 写进 u 盘,也可以将 dvd 放到硬盘上通过 grub 引导启动安装,文档在这里. 2.安装过程中尽量选择 ...

  5. 【Codeforces 225C】Barcode

    [链接] 我是链接,点我呀:) [题意] 让你把每一列都染成一样的颜色 要求连续相同颜色的列的长度都大于等于x小于等于y 问你最少的染色次数 [题解] 先求出每一列染成#或者.需要染色多少次 设f[0 ...

  6. 【郑轻邀请赛 C】DOBRI

    [题目链接]:https://acm.zzuli.edu.cn/zzuliacm/problem.php?id=2129 [题意] [题解] NMB 直接说i-1,i-2,i-3不就好了- [Numb ...

  7. jquery文件批量上传控件Uploadify3.2(java springMVC)

    人比較懒  有用为主 不怎么排版了 先放上Uploadify的官网链接:http://www.uploadify.com/  -->里面能够看到PHP的演示样例,属性说明,以及控件下载地址.分f ...

  8. mongodb数据库的启动和停止

             数据库的启动和停止是数据库最主要的操作,也是数据库可以提供服务和被连接管理的前提条件.不同的数据库启动和停止的方式有一些差异.但也有同样之处,启动和关闭也必然会和数据库的进程有关 ...

  9. hdu 2222(AC自动机模版题)

    Keywords Search Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others ...

  10. HTTP服务端JSON服务端

    HTTP服务端JSON服务端 最后更新日期:  2014-5-18 Author: Kagula 阅读前提: CMake工具的基本使用 内容简介: CPPCMS是个开源Web开发框架,通过它可以很容易 ...