常用图形绘制

<%@ 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的实例
Graphics gph;
//从指定的Image对象创建新Graphics对象
gph = Graphics.FromImage(bmp);
gph.SmoothingMode = SmoothingMode.HighQuality;
//设置图片质量,指定是否将平滑处理(消除锯齿)应用于直线、曲线和已填充区域的边缘
gph.Clear(Color.Red);
//清除整个绘图面并以指定背景色填充
gph.DrawRectangle(Pens.Blue, , , , );
gph.FillRectangle(Brushes.Blue, , , , );
//绘制矩形
gph.DrawEllipse(Pens.Blue, , , , );
gph.FillEllipse(Brushes.Blue, , , , );
//绘制椭圆
gph.DrawPie(Pens.Blue, , , , , , );
//绘制圆弧
gph.FillPie(Brushes.Blue, , , , , , );
//绘制饼图
Point[] line={new Point(,),new Point(,),new Point(,),new Point(,)};
gph.DrawCurve(Pens.Blue, line);
//绘制曲线
gph.DrawBezier(Pens.Blue, new Point(, ), new Point(, ), new Point(, ), new Point(, ));
//绘制贝塞尔曲线
Point[] line2 ={ new Point(, ), new Point(, ), new Point(, ), new Point(, ) };
gph.DrawPolygon(Pens.Blue, line2);
//gph.FillPolygon(Pens.Blue, line2);
//绘制多边形
Bitmap mybit=new Bitmap(Server.MapPath("001.jpg"));
gph.DrawImage(mybit,,,,);
//绘制图片
gph.DrawLine(Pens.Black, , , , );
//绘制直线
bmp.Save(Response.OutputStream, ImageFormat.Gif);//ImageFormat 对象,它指定保存的图像的格式
//向客户端输出数据流,并以此数据流形成Gif图片
}
</script>

绘制文本字符串

<%@ Page ContentType="image/gif" Language="C#" %>
<!--ContentType设置页面类型-->
<%@ Import namespace="System.Drawing" %>
<%@ Import namespace="System.Drawing.Imaging" %>
<%@ Import namespace="System.Drawing.Drawing2D" %>
<%@ Import namespace="System.Drawing.Text" %>
<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.TextRenderingHint = TextRenderingHint.ClearTypeGridFit;
//设置字符串质量
gph.Clear(Color.Red);
//清除整个绘图面并以指定背景色填充
gph.DrawString("无换行显示:绘制文本换行显示的字符串,应该使用文本外部边界的长方行", new Font("宋体", ), Brushes.Blue, , );
//绘制文本字符串string, Font, Brush, float, float(字符串,字体,x,y坐标)
RectangleF rect = new RectangleF(, , , );
string str = "绘制文本换行显示的字符串,应该使用文本外部边界的长方行";
gph.DrawString(str, new Font("宋体", ), Brushes.Blue,rect);
//绘制有范围的字符串
bmp.Save(Response.OutputStream, ImageFormat.Gif);//ImageFormat 对象,它指定保存的图像的格式
//向客户端输出数据流,并以此数据流形成Gif图片
}
</script>

设置图片质量

SmoothingMode 枚举 指定是否将平滑处理(消除锯齿)应用于直线、曲线和已填充区域的边缘

成员名称 说明 
AntiAlias 指定消除锯齿的呈现。 
Default 指定默认模式。 
HighQuality 指定高质量、低速度呈现。 
HighSpeed 指定高速度、低质量呈现。 
Invalid 指定一个无效模式。 
None 指定不消除锯齿。

<%@ ContentType="image/jpeg" Language="C#" %>
<%@ Import namespace="System.Drawing" %>
<%@ Import namespace="System.Drawing.Imaging" %>
<%@ Import namespace="System.Drawing.Drawing2D" %>
<%@ Import namespace="System.Drawing.Text" %>
<script language="C#" runat=server>
void Page_Load(Object sender , EventArgs e)
{
Bitmap objBitmap;
Graphics objGraphics;
Pen objPen;
Brush objBrush;
Font objFont;
objBitmap = new Bitmap( , );
objGraphics = Graphics.FromImage( objBitmap );
objPen = new Pen( Color.Yellow );
objBrush = new SolidBrush( Color.Yellow );
objFont = new Font( "Lucida Sans Unicode", );
objGraphics.SmoothingMode = SmoothingMode.Default;
objGraphics.DrawString( "Default", objFont, objBrush, , );
objGraphics.DrawEllipse( objPen, , , , );
objGraphics.SmoothingMode = SmoothingMode.AntiAlias;
objGraphics.DrawString( "AntiAlias", objFont, objBrush, , );
objGraphics.DrawEllipse( objPen, , , , );
objGraphics.SmoothingMode = SmoothingMode.HighQuality;
objGraphics.DrawString( "HighQuality", objFont, objBrush, , );
objGraphics.DrawEllipse( objPen, , , , );
objGraphics.SmoothingMode = SmoothingMode.HighSpeed;
objGraphics.DrawString( "HighSpeed", objFont, objBrush, , );
objGraphics.DrawEllipse( objPen, , , , );
objGraphics.SmoothingMode = SmoothingMode.None;
objGraphics.DrawString( "None", objFont, objBrush, , );
objGraphics.DrawEllipse( objPen, , , , );
objBitmap.Save( Response.OutputStream, ImageFormat.Jpeg );
}
</Script>

设置文本质量
TextRenderingHint 枚举 指定文本呈现的质量

成员名称 说明 
AntiAlias 指定在无提示的情况下使用每个字符的 AntiAlias 标志符号位图来绘制字符。由于采用了 AntiAlias,质量会得到改善。由于关闭了提示,主干宽度差可能会比较明显。 
AntiAliasGridFit 指定在有提示的情况下使用每个字符的 AntiAlias 标志符号位图来绘制字符。由于采用了 AntiAlias,质量会得到大大改善,但同时会增加性能成本。 
ClearTypeGridFit 指定在有提示的情况下使用每个字符的标志符号 CT 位图来绘制字符。这是质量最高的设置。用于利用 ClearType 字体功能。 
SingleBitPerPixel 指定使用每个字符的标志符号位图来绘制字符。不使用提示。 
SingleBitPerPixelGridFit 指定使用每个字符的标志符号位图来绘制字符。提示用于改善字符在主干和弯曲部分的外观。 
SystemDefault 指定在有系统默认呈现提示的情况下使用每个字符的标志符号位图来绘制字符。将采用用户为系统选择的所有字体修匀设置来绘制文本。

<%@ Page ContentType="image/jpeg" Language="C#" %>
<%@ Import namespace="System.Drawing" %>
<%@ Import namespace="System.Drawing.Imaging" %>
<%@ Import namespace="System.Drawing.Text" %>
<script language="C#" runat=server>
void Page_Load(Object sender , EventArgs e)
{
Bitmap objBitmap;
Graphics objGraphics;
string strString;
objBitmap = new Bitmap( , );
objGraphics = Graphics.FromImage( objBitmap );
objGraphics.Clear( Color.DarkBlue );
Font objFont = new Font( "Times", );
strString = "ABCabc123 - AntiAlias";
objGraphics.TextRenderingHint = TextRenderingHint.AntiAlias;
objGraphics.DrawString( strString, objFont, Brushes.White, , );
strString = "ABCabc123 - AntiAliasGridFit";
objGraphics.TextRenderingHint = TextRenderingHint.AntiAliasGridFit;
objGraphics.DrawString( strString, objFont, Brushes.White, , );
strString = "ABCabc123 - ClearTypeGridFit";
objGraphics.TextRenderingHint = TextRenderingHint.ClearTypeGridFit;
objGraphics.DrawString( strString, objFont, Brushes.White, , );
strString = "ABCabc123 - SingleBitPerPixel";
objGraphics.TextRenderingHint = TextRenderingHint.SingleBitPerPixel;
objGraphics.DrawString( strString, objFont, Brushes.White, , );
strString = "ABCabc123 - SingleBitPerPixelGridFit";
objGraphics.TextRenderingHint = TextRenderingHint.SingleBitPerPixel;
objGraphics.DrawString( strString, objFont, Brushes.White, , );
strString = "ABCabc123 - SystemDefault";
objGraphics.TextRenderingHint = TextRenderingHint.SystemDefault;
objGraphics.DrawString( strString, objFont, Brushes.White, , );
objBitmap.Save( Response.OutputStream, ImageFormat.Jpeg );
}
</Script>

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

  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. GDI+基础(1)

    转载:http://www.cnblogs.com/peterzb/archive/2009/07/19/1526555.html System.Drawing 命名空间提供了对 GDI+ 基本图形功 ...

  6. Win32 GDI基础(笔记)

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

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

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

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

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

  9. VC GDI+基础用法VC

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

随机推荐

  1. HTML5拖放

    HTML5拖放 <!doctype html> <html> <head> <meta charset="UTF-8"> <t ...

  2. Netty笔记--ByteBuf释放

    参考资料:http://www.maljob.com/pages/newsDetail.html?id=394 参考资料:http://www.blogjava.net/liuguly/archive ...

  3. C#开发学习——.net C#中页面之间传值传参的方法以及内置对象

    1.QueryString是一种非常简单的传值方式,他可以将传送的值显示在浏览器的地址栏中.如果是传递一个或多个安全性要求不高或是结构简单的数值时,可以使用这个方法.但是对于传递数组或对象的话,就不能 ...

  4. The underlying provider failed on Open. EF

    本地测试是可以的:但是放到服务器上就不行了: 报错:"The underlying provider failed on Open." 这一情况和我以前遇上的一次错误有点相似啊:都 ...

  5. ExtJs5_继承自定义一个控件

    Extjs的开发都可以遵循OOP的原则,其对类的封装也很完善了.自定义一个控件最简单的办法就是继承一个已有的控件.根据上一节的需要,我做了一个Button的子类.首先根据目录结构,在app目录下建立一 ...

  6. angular-utils-pagination 使用案例

    angular-utils-pagination是基于angular,bootstrap,jquery的一个分页插件,详细介绍以及使用方法参照: Git:https://github.com/mich ...

  7. 托管host

    托管在googlecode的host https://smarthosts.googlecode.com/svn/trunk/hosts

  8. iso18092-2004中ISO14443,Felica的关系

    ISO18092协议介绍了P2P通讯中的ACTIVE模式和PASSIVE通讯模式,其实ISO18092使用了ISO14443协议和非国际标准的FELICA通讯协议,这里总结了一下.

  9. 【HDOJ】3500 Fling

    题意巨难懂.简言之,就是球互相碰撞时,主动碰撞的球将会停止,另一个球将沿着碰撞方向继续移动,不断碰撞.但是无法弹射紧挨着的球,但是若a弹射b,bc相邻,这种情况b可以弹射c. #include < ...

  10. 设计模式(五):PROTOTYPE原型模式 -- 创建型模式

    1.定义 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象. 2.适用场景 原型模式的主要思想是基于现有的对象克隆一个新的对象出来,一般是有对象的内部提供克隆的方法,通过该方法返回一个对 ...