GDI+基础(1)

转载: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 对象中指定像素的颜色 

示例

Bitmap bmp = new Bitmap(500, 500);
Random pixed = new Random();
for (int i = 0; i < 1000; i++)
{
bmp.SetPixel(pixed.Next(500), pixed.Next(500), Color.Red);
}
bmp.Save("1.jpg",ImageFormat.Png);

 

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(500, 400);
 //创建一个宽400,高200的实例
Graphics gph;
//从指定的Image对象创建新Graphics对象
gph = Graphics.FromImage(bmp);
//清除整个绘图面并以指定背景色填充
gph.Clear(Color.Olive);
//绘制由坐标对、宽度和高度指定的矩形
gph.DrawRectangle(Pens.Red, 100, 100, 50, 50);
//填充由笔刷颜色,一对坐标、一个宽度和一个高度指定的矩形的内部
gph.FillRectangle(Brushes.Green, 200, 200, 50, 50);
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");

使用画笔

Pen 类: 画笔,用来换线,可以指定比宽度。

Pens: 静态类,定义了常见颜色的画笔。

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

Brushes:静态类,定义了,常见颜色的画刷。

 

System.Drawing.SolidBrush 定义单色画刷
System.Drawing.Drawing2D.HatchBrush 用阴影样式、前景色和背景色定义矩形画笔
System.Drawing.Drawing2D.LinearGradientBrush 使用线性渐变封装 Brush 对象
System.Drawing.Drawing2D.PathGradientBrush 封装 Brush 对象,它通过渐变填充 GraphicsPath 对象的内部
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(600, 120);
 //创建一个宽400,高200的实例
 Bitmap img=new Bitmap(Server.MapPath("001.jpg"));
Color mycolor;
mycolor = Color.FromArgb(0, 0, 255);
//FromArgb方法设置RGB值
 Rectangle rect=new Rectangle(300,0,100,100);
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, 0, 0, 100, 100);
gph.FillRectangle(solid, 100, 0, 100, 100);
gph.FillRectangle(hatch, 200, 0, 100, 100);
gph.FillRectangle(linear, rect);
gph.FillRectangle(texture, 400, 0, 100, 100);
bmp.Save(Response.OutputStream, ImageFormat.Gif);//ImageFormat 对象,它指定保存的图像的格式
//向客户端输出数据流,并以此数据流形成Gif图片 
}
</script>

 

更多:

GDI+ 位图介绍

.Net Core GDI+ 使用基础

GDI+ DrawString字间距处理

posted @ 2014-03-30 21:34  天马3798  阅读(494)  评论(0编辑  收藏  举报