转载:http://www.cnblogs.com/peterzb/archive/2009/07/19/1526555.html

System.Drawing 命名空间提供了对 GDI+ 基本图形功能的访问
System.Drawing.Drawing2D 命名空间提供高级的二维和矢量图形功能。此命名空间包含梯度型画刷、Matrix 类(用于定义几何变换)和 GraphicsPath 类
System.Drawing.Imaging 命名空间提供高级 GDI+ 图像处理功能
System.Drawing.Text 命名空间提供高级 GDI+ 排版功能

Bitmap类封装 GDI+ 位图,此位图由图形图像及其属性的像素数据组成。Bitmap 对象是用于处理由像素数据定义的图像的对象

1.属性:
Height 获取此 Image 对象的高度 
PixelFormat 获取此 Image 对象的像素格式 
Size 获取此图像的以像素为单位的宽度和高度 
Width 获取此 Image 对象的宽度

2.方法
Dispose 释放由此 Image 对象使用的所有资源
Save 将此图像以指定的格式保存到指定的流中
SetPixel 设置 Bitmap 对象中指定像素的颜色

示例

<%@ Page ContentType="image/gif" Language="C#" %>
<!--ContentType设置页面类型-->
<%@ Import namespace="System.Drawing" %>
<%@ Import namespace="System.Drawing.Imaging" %>
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
Bitmap bmp = new Bitmap(, );
//创建一个宽400,高200的实例
Random pixel = new Random();
//创建一个随机实例
for(int i=;i<;i++) {
bmp.SetPixel(pixel.Next(), pixel.Next(), Color.Red);
//设置 Bitmap 对象中指定像素的颜色,构造函数参数为x,y,color
}
bmp.Save(Response.OutputStream, ImageFormat.Gif);//ImageFormat 对象,它指定保存的图像的格式
//向客户端输出数据流,并以此数据流形成Gif图片
}
</script>

Graphics 类表示封装 GDI+ 绘图面,比如画长方形,圆形等更加复杂的图形.

常用属性和方法:

属性 说明 
Clip 获取或设置Region对象,该对象限定此Graphics对象的绘图区域。 
ClipBounds 获取RectangleF结构,该结构限定此Graphics对象的剪辑区域。 
DpiX 获取此Graphics对象的水平分辨率。 
DpiY 获取此Graphics对象的垂直分辨率。 
PageScale 获取或设置此Graphics对象的全局单位和页单位之间的比例。 
PageUnit 获取或设置用于此Graphics对象中的页坐标的度量单位。 
PixelOffsetMode 获取或设置一个值,该值指定在呈现此Graphics对象的过程中像素如何偏移。 
RenderingOrigin 为抵色处理和阴影画笔获取或设置此Graphics对象的呈现原点。 
SmoothingMode 获取或设置此Graphics对象的呈现质量。 
TextRenderingHint 获取或设置与此Graphics对象关联的文本的呈现模式。 
Transform 获取或设置此Graphics对象的全局变换。 
VisibleClipBounds 获取或设置此Graphics对象的可见剪辑区域的边框。

方法 说明 
Clear 清除整个绘图面并以指定背景色填充。 
Dispose 释放由此Graphics对象使用的所有资源。 
DrawArc 绘制一段弧线,它表示由一对坐标、宽度和高度指定的椭圆部分。 
DrawEllipse 绘制一个由边框定义的椭圆。 
DrawIcon 在指定坐标处绘制由指定的Icon对象表示的图像。 
DrawIconUnstretched 绘制指定的Icon对象表示的图像,而不缩放该图像。 
DrawImage 在指定位置并且按原始大小绘制指定的Image对象。 
DrawImageUnscaled 在坐标对所指定的位置并且按其原始大小绘制指定的Image对象。 
DrawLine 绘制一条连接由坐标对指定的两个点的线条。 
DrawLines 绘制一系列连接一组Point结构的线段。 
DrawPie 绘制一个扇形,该扇形由一个坐标对、宽度和高度以及两条射线所指定的椭圆定义。 
DrawPolygon 绘制由一组Point结构定义的多边形。 
DrawRectangle 绘制由坐标对、宽度和高度指定的矩形。 
DrawRectangles 绘制一系列由Rectangle结构指定的矩形。 
DrawString 在指定位置并且用指定的Brush和Font对象绘制指定的文本字符串。 
FillClosedCurve 填充由Point结构数组定义的闭合基数样条曲线的内部。 
FillEllipse 填充边框所定义的椭圆的内部,该边框由一对坐标、一个宽度和一个高度指定。 
FillPie 填充由一对坐标、一个宽度、一个高度以及两条射线指定的椭圆所定义的扇形区的内部。 
FillPolygon 
填充Point结构指定的点数组所定义的多边形的内部。 
FillRectangle 填充由一对坐标、一个宽度和一个高度指定的矩形的内部。 
FillRectangles 填充由Rectangle结构指定的一系列矩形的内部。 
FillRegion 填充Region 对象的内部。 
Flush 强制执行所有挂起的图形操作并立即返回而不等待操作完成。 
FromHdc 从设备上下文的指定句柄创建新的Graphics对象。 
FromHwnd 从窗口的指定句柄创建新的Graphics对象。 
FromImage 从指定的Image对象创建新Graphics对象。 
GetHdc 获取与此Graphics对象关联的设备上下文的句柄。 
ReleaseHdc 释放通过以前对此Graphics对象GetHdc方法的调用获得的设备上下文句柄。 
ResetClip 将此Graphics对象的剪辑区域重置为无限区域。 
ResetTransform 将此Graphics对象的全局变换矩阵重置为单位矩阵。

           
画一个矩形
DrawRectangle 绘制由坐标对、宽度和高度指定的矩形

public void DrawRectangle(Pen, int, int, int, int);

绘制由坐标对、宽度和高度指定的矩形

<%@ Page ContentType="image/gif" Language="C#" %>
<!--ContentType设置页面类型-->
<%@ Import namespace="System.Drawing" %>
<%@ Import namespace="System.Drawing.Imaging" %>
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
Bitmap bmp = new Bitmap(, );
//创建一个宽400,高200的实例
Graphics gph;
//从指定的Image对象创建新Graphics对象
gph = Graphics.FromImage(bmp);
//清除整个绘图面并以指定背景色填充
gph.Clear(Color.Olive);
//绘制由坐标对、宽度和高度指定的矩形
gph.DrawRectangle(Pens.Red, , , , );
//填充由笔刷颜色,一对坐标、一个宽度和一个高度指定的矩形的内部
gph.FillRectangle(Brushes.Green, , , , );
bmp.Save(Response.OutputStream, ImageFormat.Gif);//ImageFormat 对象,它指定保存的图像的格式
//向客户端输出数据流,并以此数据流形成Gif图片
}
</script>

使用颜色

Color 结构表示 ARGB 颜色

颜色包含a,R,G,B

Color mycolor;
mycolor = Color.FromName("blue");
//FromName方法把颜色字符串换成GDI+颜色
mycolor = Color.FromArgb(255, 0, 0);
//FromArgb方法设置RGB值
mycolor = Color.FromArgb(100,255, 0, 0); 
//FromArgb方法设置a,RGB值

用ColorTranslator类在HTML颜色和GDI+颜色之间转换
mycolor = ColorTranslator.FromHtml("#00FF00");

使用画笔

Brush 类用于填充图形形状(如矩形、椭圆形、扇形、多边形和封闭路径)内部的对象

System.Drawing.Drawing2D.HatchBrush 用阴影样式、前景色和背景色定义矩形画笔
System.Drawing.Drawing2D.LinearGradientBrush 使用线性渐变封装 Brush 对象
System.Drawing.Drawing2D.PathGradientBrush 封装 Brush 对象,它通过渐变填充 GraphicsPath 对象的内部
System.Drawing.SolidBrush 定义单色画刷
System.Drawing.TextureBrush 使用图像来填充形状的内部

PathGradientBrush类似LinearGradientBrush,但更加强大,不再介绍.

下面示例

<%@ Page ContentType="image/gif" Language="C#" %>
<!--ContentType设置页面类型-->
<%@ Import namespace="System.Drawing" %>
<%@ Import namespace="System.Drawing.Imaging" %>
<%@ Import namespace="System.Drawing.Drawing2D" %>
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
Bitmap bmp = new Bitmap(, );
//创建一个宽400,高200的实例
Bitmap img=new Bitmap(Server.MapPath("001.jpg"));
Color mycolor;
mycolor = Color.FromArgb(, , );
//FromArgb方法设置RGB值
Rectangle rect=new Rectangle(,,,);
SolidBrush solid = new SolidBrush(mycolor);
//实心颜色填充
HatchBrush hatch = new HatchBrush(HatchStyle.Cross, Color.Orange);
//阴影模式填充,从HatchStyle属性中选择样式
LinearGradientBrush linear;
linear = new LinearGradientBrush(rect, Color.Red, Color.Yellow, LinearGradientMode.ForwardDiagonal);
//渐变色填充,构造函数参数为(Rectangle, Color, Color, LinearGradientMode)
//一个矩形,起点颜色,结束色,指定如何呈现渐变;
//BackwardDiagonal 指定从右上到左下的渐变。
//ForwardDiagonal 指定从左上到右下的渐变。
//Horizontal 指定从左到右的渐变。
//Vertical 指定从上到下的渐变。
TextureBrush texture = new TextureBrush(img);
//以图片填充图形
Graphics gph;
//从指定的Image对象创建新Graphics对象
gph = Graphics.FromImage(bmp);
//清除整个绘图面并以指定背景色填充
gph.Clear(Color.Red);
//绘制由坐标对、宽度和高度指定的矩形
//填充由一对坐标、一个宽度和一个高度指定的矩形的内部
gph.FillRectangle(Brushes.Green, , , , );
gph.FillRectangle(solid, , , , );
gph.FillRectangle(hatch, , , , );
gph.FillRectangle(linear, rect);
gph.FillRectangle(texture, , , , );
bmp.Save(Response.OutputStream, ImageFormat.Gif);//ImageFormat 对象,它指定保存的图像的格式
//向客户端输出数据流,并以此数据流形成Gif图片
}
</script>

GDI+基础(1)的更多相关文章

  1. GDI基础(3):绘制图片

    1.CBitmap位图类封装了Windows GDI中的位图和操作位图的成员函数.CPen.CBrush.CFont.CBitmap是常用的Windows GDI对象,和CFont一样,CBitmap ...

  2. 《C# GDI+ 破境之道》:第一境 GDI+基础 —— 第一节:画直线

    今天正式开一本新书,<C# GDI+ 破镜之道>,同样是破镜之道系列丛书的一分子. 关于GDI+呢,官方的解释是这样的: GDI+ 是 Microsoft Windows 操作系统的窗体子 ...

  3. 《C# GDI+ 破境之道》:第一境 GDI+基础 —— 第二节:画矩形

    有了上一节画线的基础,画矩形的各种边线就特别好理解了,所以,本节在矩形边线上,就不做过多的讲解了,关注一下画“随机矩形”的具体实现就好.与画线相比较,画矩形稍微复杂的一点就是在于它多了很多填充的样式. ...

  4. C#GDI+基础(三)画刷详解

    SolidBrush:一般的画刷,通常只用一种颜色去填充GDI+图形 创建一般画刷: SolidBrush sbBrush1 = new SolidBrush(Color.Green); HatchB ...

  5. Win32 GDI基础(笔记)

    1.GDI名字的意义 GDI Graphic Device Interface,我说不清和GUI有什么区别.可能一种针对设备,一种针对用户而言吧,反正以后都说GDI,也就是Windows的图形编程. ...

  6. GDI基础(1):绘制线条和图形

    1. 绘制一个像素点:SetPixel(). 绘制直线:MoveTo(),LineTo(). 绘制多个首尾相连的线:Polyline(). 绘制矩形:FrameRect(),Rectangle(),F ...

  7. 《C# GDI+ 破境之道》:第一境 GDI+基础 —— 第三节:画圆形

    有了上一节画矩形的基础,画圆形就不要太轻松+EZ:)所以,本节在画边线及填充上,就不做过多的讲解了,关注一下画“随机椭圆”.“正圆”.“路径填充”的具体实现就好.与画矩形相比较,画椭圆与之完全一致,没 ...

  8. VC GDI+基础用法VC

    #include "GdiPlus.h" // 使用GDI+ 命名空间 using namespace Gdiplus; // 与GDI+ 相关的其它头文件,如:GraphicsP ...

  9. GDI+基础(3)

    常用图形绘制 <%@ Page ContentType="image/gif" Language="C#" %> <!--ContentTyp ...

随机推荐

  1. ext之关键字mixins、statics、require

    1.mixins 说明:类似于面向对象中的多继承 <script type="text/javascript"> Ext.onReady(function () { / ...

  2. 如何搭建一个angularJS应用

    以写一个hello word为例,首先引入angular.js库文件   <!doctype html> <html ng-app> <head> <titl ...

  3. php 4.X与5.x版本构造函数区别与类的继承

    今天看ecshop源码的时候发现 构造函数是和类名一样,以前没接触过,一下子疑惑啦 HP4.x 版本: PHP 4.x 的构造函数名与类名相同.        注意:在子类里父类的构造函数不会自动执行 ...

  4. jQuery判断浏览器

    在jQuery1.9版本之前,jQuery 提供了 browser 标记 <script type="text/javascript" src="http://aj ...

  5. ExtJs MVC应用架构示例

    项目目录结构 (源码)2. app.js Ext.Loader.setConfig({ enabled : true, paths : { 'Ext' : 'extjs', 'App' : 'app' ...

  6. 浅析hashCode方法

    一.问题引入 谈到hashCode就不得不说equals方法,二者均在Object类里,由于Object类是所有类的基类,所以一切类里都可以重写这两个方法. 要想较清晰的理解,需要先知道容器Colle ...

  7. CLOUDSTACK接管VCENTER,意外频出,但最终搞定

    没办法,第一次吃螃蟹,总是经常住. 还好,我有一颗不肯媚俗的心~~ 但二级存储,和 存储的性能,也必须纳入考虑范围了.

  8. 哈希集合——hashSet

    /**     哈希集合特点:存取顺序不确定,同一个哈希值的位置可以存放多个元素,                   哈希集合存放元素的时候是先判断哈希地址值:hashCode()是否相同,如果不同 ...

  9. 【HDOJ】1716 排列2

    STL. /* 1716 */ #include <iostream> #include <algorithm> #include <cstdio> #includ ...

  10. 【二分】【高精度】Vijos P1472 教主的集合序列

    题目链接: https://vijos.org/p/1472 题目大意: S1={1,2,3…n}.当i>1时,Si为集合Si-1中任意两个不相同数之和的集合. 将每个集合中所有元素取出,集合S ...