常用图形绘制

<%@ 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. jQuery获取JSON格式数据方法

    getJSON方法: jQuery.getJSON(url,data,success(data,status,xhr)) $("button").click(function(){ ...

  2. wamp虚拟机配置

    1.找到httpd.conf 里面:找到 # Virtual hosts 开启虚拟机Include conf/extra/httpd-vhosts.conf 2  编辑httpd-vhosts.con ...

  3. jquery easy ui 学习 (4) window 打开之后 限制操纵后面元素属性

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  4. spinner 下拉框控件

    spinnerMode=dropdown时,为下拉模式spinnerMode=dialog时,会在界面中间弹出Android:popupBackground=”#f0000000”,可以去除spinn ...

  5. hdu 4407 Sum

    http://acm.hdu.edu.cn/showproblem.php?pid=4407 题意:给定初始n个数1..n,两个操作,①1 x y p  询问第x个数到第y个数中与p互质的数的和; ② ...

  6. Xamarin Studio –Project not built in active configuration

    当我们加载项目以后如果出现以下项目提示 处理方式如下: 解决方案右键->options 配置->configuration mappings->勾选构建的ios项目 项目右键-> ...

  7. js中数字计算精度

    其实同样的问题在java中也有存在,同样是浮点数的问题 问题这样的: 37.5*5.5=206.08 (JS算出来是这样的一个结果,我四舍五入取两位小数) 我先怀疑是四舍五入的问题,就直接用JS算了一 ...

  8. 【HDOJ】1619 Unidirectional TSP

    题目本身一点儿都不难,但是就是被字典序搞死了.写的挺麻烦,但是过了,逆向做好做一点儿. /* 1619 */ #include <cstdio> #include <cstring& ...

  9. BZOJ2274: [Usaco2011 Feb]Generic Cow Protests

    2274: [Usaco2011 Feb]Generic Cow Protests Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 196  Solve ...

  10. 格式化字符串format函数

    自python2.6开始,新增了一种格式化字符串的函数str.format(),可谓威力十足.那么,他跟之前的%型格式化字符串相比,有什么优越的存在呢?让我们来揭开它羞答答的面纱. 语法 它通过{}和 ...