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 对象中指定像素的颜色
示例
<%@ 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)的更多相关文章
- GDI基础(3):绘制图片
1.CBitmap位图类封装了Windows GDI中的位图和操作位图的成员函数.CPen.CBrush.CFont.CBitmap是常用的Windows GDI对象,和CFont一样,CBitmap ...
- 《C# GDI+ 破境之道》:第一境 GDI+基础 —— 第一节:画直线
今天正式开一本新书,<C# GDI+ 破镜之道>,同样是破镜之道系列丛书的一分子. 关于GDI+呢,官方的解释是这样的: GDI+ 是 Microsoft Windows 操作系统的窗体子 ...
- 《C# GDI+ 破境之道》:第一境 GDI+基础 —— 第二节:画矩形
有了上一节画线的基础,画矩形的各种边线就特别好理解了,所以,本节在矩形边线上,就不做过多的讲解了,关注一下画“随机矩形”的具体实现就好.与画线相比较,画矩形稍微复杂的一点就是在于它多了很多填充的样式. ...
- C#GDI+基础(三)画刷详解
SolidBrush:一般的画刷,通常只用一种颜色去填充GDI+图形 创建一般画刷: SolidBrush sbBrush1 = new SolidBrush(Color.Green); HatchB ...
- Win32 GDI基础(笔记)
1.GDI名字的意义 GDI Graphic Device Interface,我说不清和GUI有什么区别.可能一种针对设备,一种针对用户而言吧,反正以后都说GDI,也就是Windows的图形编程. ...
- GDI基础(1):绘制线条和图形
1. 绘制一个像素点:SetPixel(). 绘制直线:MoveTo(),LineTo(). 绘制多个首尾相连的线:Polyline(). 绘制矩形:FrameRect(),Rectangle(),F ...
- 《C# GDI+ 破境之道》:第一境 GDI+基础 —— 第三节:画圆形
有了上一节画矩形的基础,画圆形就不要太轻松+EZ:)所以,本节在画边线及填充上,就不做过多的讲解了,关注一下画“随机椭圆”.“正圆”.“路径填充”的具体实现就好.与画矩形相比较,画椭圆与之完全一致,没 ...
- VC GDI+基础用法VC
#include "GdiPlus.h" // 使用GDI+ 命名空间 using namespace Gdiplus; // 与GDI+ 相关的其它头文件,如:GraphicsP ...
- GDI+基础(3)
常用图形绘制 <%@ Page ContentType="image/gif" Language="C#" %> <!--ContentTyp ...
随机推荐
- js删除选中的复选框中的父辈。
function scsx(){ var cb=document.getElementsByName('checkbox') if(confirm('删除?')){ for (var i=0;i< ...
- ASP.NET MVC的Action Filter
一年前写了一篇短文ASP.NET MVC Action Filters,整理了Action Filter方面的资源,本篇文章详细的描述Action Filter.Action Filter作为一个可以 ...
- 「30天自制操作系统」 Stop & 「OS67 」 Start
废话 整个十月都没有再写一点什么, 其实没什么好写的, 把书里的东西码出来贴在博客里实在没什么意思, 况且书里已经写得够详细了. 这本书给我最深刻的感觉是, 作者通过简化一些细节, 一步一步地模拟整个 ...
- Ubiquitous Religions
http://poj.org/problem?id=2524 这道题就是并查集. #include<cstdio> #include<cstring> #include< ...
- WPF利用动画实现圆形进度条
原文:WPF利用动画实现圆形进度条 这是我的第一篇随笔,最近因为工作需要,开始学习WPF相关技术,自己想实现以下圆形进度条的效果,逛了园子发现基本都是很久以前的文章,实现方式一般都是GDI实现的,想到 ...
- treap修订
#include<cstdio> #include<cmath> #include<algorithm> #include<ctime> #includ ...
- C# 实现文件或目录复制到指定目录
public void CopyFilesToDirKeepSrcDirName(string srcPath, string destDir) { if (Directory.Exists(srcP ...
- Java---软件试用次数(Properties类的简单使用)
编程练习(软件试用次数) 实现一个如下的软件小功能: 记录软件运行的次数并在每次运行时提示已经运行的次数.如果运行次数大于5次,软件不再运行并给出提示:试用次数已到,请注册! 本代码只简单的介绍了软件 ...
- 获取git的当前分支名称
git branch | grep \"*\" | awk -F \"_\" '{print $2}'
- [Design Pattern] Iterator Pattern 简单案例
Iterator Pattern,即迭代时模式,按照顺序依次遍历集合内的每一个元素,而不用了解集合的底层实现,属于行为类的设计模式.为了方便理解记忆,我也会称其为遍历模式. 下面是一个迭代器模式的简单 ...