使用钢笔,画笔用来填充图形内部,钢笔则用来绘制带有一定宽度,样式和色彩的线条和曲线.

可以使用标准的pens类

<%@ 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的实例
Color mycolor;
mycolor = Color.FromArgb(, , );
//FromArgb方法设置RGB值
Pen mypen = new Pen(Color.Blue, );
//创建自定义钢笔,color,float,参数为颜色和宽度
Graphics gph;
//从指定的Image对象创建新Graphics对象
gph = Graphics.FromImage(bmp);
//清除整个绘图面并以指定背景色填充
gph.Clear(Color.Red);
//绘制由坐标对、宽度和高度指定的矩形
gph.DrawRectangle(Pens.Green, , , , );
gph.DrawRectangle(mypen, , , , );
bmp.Save(Response.OutputStream, ImageFormat.Gif);//ImageFormat 对象,它指定保存的图像的格式
//向客户端输出数据流,并以此数据流形成Gif图片
}
</script>

自定义钢笔样式

DashStyle枚举 指定用 Pen 对象绘制的虚线的样式

成员名称 说明 
Custom 指定用户定义的自定义划线段样式。 
Dash 指定由划线段组成的直线。 
DashDot 指定由重复的划线点图案构成的直线。 
DashDotDot 指定由重复的划线点点图案构成的直线。 
Dot 指定由点构成的直线。 
Solid 指定实线。

示例

<%@ 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.Clear(Color.Green);
Pen mypen = new Pen(Color.Red, );
//创建自定义钢笔,color,float,参数为颜色和宽度
mypen.DashStyle = DashStyle.Custom;
//自定义钢笔样式
gph.DrawLine(mypen, , , , );
//绘制直线
mypen.DashStyle = DashStyle.Dash;
gph.DrawLine(mypen, , , , );
//(Pen, int, int, int, int)pen Pen 起点x坐标,起点y坐标,终点x坐标,终点y坐标
mypen.DashStyle = DashStyle.DashDot;
gph.DrawLine(mypen, , , , );
mypen.DashStyle = DashStyle.DashDotDot;
gph.DrawLine(mypen, , , , );
mypen.DashStyle = DashStyle.Dot;
gph.DrawLine(mypen, , , , );
mypen.DashStyle = DashStyle.Solid;
gph.DrawLine(mypen, , , , );
bmp.Save(Response.OutputStream, ImageFormat.Gif);//ImageFormat 对象,它指定保存的图像的格式
//向客户端输出数据流,并以此数据流形成Gif图片
}
</script>

设置钢笔线帽样式,可以设置线条的起始和结束的线帽样式

StartCap 获取或设置用在通过此 Pen 对象绘制的直线起点的帽样式 
EndCap 获取或设置用在通过此 Pen 对象绘制的直线终点的帽样式 
DashCap 获取或设置用在短划线终点的帽样式,这些短划线构成通过此 Pen 对象绘制的虚线

LineCap 枚举
成员名称 说明 
AnchorMask 指定用于检查线帽是否为锚头帽的掩码。 
ArrowAnchor 指定箭头状锚头帽。 
Custom 指定自定义线帽。 
DiamondAnchor 指定菱形锚头帽。 
Flat 指定平线帽。 
NoAnchor 指定没有锚。 
Round 指定圆线帽。 
RoundAnchor 指定圆锚头帽。 
Square 指定方线帽。 
SquareAnchor 指定方锚头帽。 
Triangle 指定三角线帽。

示例

<%@ Page ContentType="image/gif" Language="C#" %>
<%@ Import namespace="System.Drawing" %>
<%@ Import namespace="System.Drawing.Imaging" %>
<%@ Import namespace="System.Drawing.Drawing2D" %>
<script language="C#" runat=server>
void Page_Load(Object sender , EventArgs e)
{
Bitmap objBitmap;
Graphics objGraphics;
Pen objPen;
objBitmap = new Bitmap( , );
objGraphics = Graphics.FromImage( objBitmap );
objPen = new Pen( Color.White );
objPen.Width = ;
objPen.EndCap = LineCap.ArrowAnchor;
objGraphics.DrawLine( objPen, , , , );
objPen.EndCap = LineCap.DiamondAnchor;
objGraphics.DrawLine( objPen, , , , );
objPen.EndCap = LineCap.Flat;
objGraphics.DrawLine( objPen, , , , );
objPen.EndCap = LineCap.Round;
objGraphics.DrawLine( objPen, , , , );
objPen.EndCap = LineCap.RoundAnchor;
objGraphics.DrawLine( objPen, , , , );
objPen.EndCap = LineCap.Square;
objGraphics.DrawLine( objPen, , , , );
objPen.EndCap = LineCap.SquareAnchor;
objGraphics.DrawLine( objPen, , , , );
objPen.EndCap = LineCap.Triangle;
objGraphics.DrawLine( objPen, , , , );
objBitmap.Save( Response.OutputStream, ImageFormat.Gif );
}
</Script>

设置钢笔的线条接头样式,通过修改LineJoin属性值,控制钢笔绘制的线条接头的外观.
LineJoin 枚举

成员名称 说明 
Bevel 指定成斜角的联接。这将产生一个斜角。 
Miter 指定斜联接。这将产生一个锐角或切除角,具体取决于斜联接的长度是否超过斜联接限制。 
MiterClipped 指定斜联接。这将产生一个锐角或斜角,具体取决于斜联接的长度是否超过斜联接限制。 
Round 指定圆形联接。这将在两条线之间产生平滑的圆弧。

示例

<%@ Page ContentType="image/gif" Language="C#" %>
<%@ Import namespace="System.Drawing" %>
<%@ Import namespace="System.Drawing.Imaging" %>
<%@ Import namespace="System.Drawing.Drawing2D" %>
<script language="C#" runat=server>
void Page_Load(Object sender , EventArgs e)
{
Bitmap objBitmap;
Graphics objGraphics;
Pen objPen;
objBitmap = new Bitmap( , );
objGraphics = Graphics.FromImage( objBitmap );
objPen = new Pen( Color.White );
objPen.Width = ;
objPen.LineJoin = LineJoin.Bevel;
objGraphics.DrawRectangle( objPen, , , , );
objPen.LineJoin = LineJoin.Miter;
objGraphics.DrawRectangle( objPen, , , , );
objPen.LineJoin = LineJoin.MiterClipped;
objGraphics.DrawRectangle(objPen, , , , );
objPen.LineJoin = LineJoin.Round;
objGraphics.DrawRectangle( objPen, , , , );
objBitmap.Save( Response.OutputStream, ImageFormat.Gif );
}
</Script>

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

  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 ...

  10. GDI+基础(3)

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

随机推荐

  1. 浅析a标签的4个伪类 .

    关于伪类,大家最熟悉的还是a标签的4个伪类::link        有链接属性时:visited    链接地址已被访问过:active     被用户激活(在鼠标点击与释放之间发生的事件):hov ...

  2. HTml <meta>标签的使用(重要)

    <meta> 元素可提供有关页面的元信息(meta-information),比如针对搜索引擎和更新频度的描述和关键词. 1.设置网页字符编码 <meta http-equiv=&q ...

  3. Dede 查询附加表

    <!--使用dede:arclist取出信息 dede_archives 表 $sql="Select 字段 from dede_archivies",但是在默认情况下 de ...

  4. Aptana Studio 快捷键

    窗口 Ctrl+ Shift +L 调出快捷键提示 Ctrl+ W 关闭当前标签窗口 Ctrl+ Shift + W 关闭当前标签窗口 Ctrl+ F6 (或者是Aptana的Ctrl+Tab )下一 ...

  5. PostBack与IsPostBack区别

    这涉及到aspx的页面回传机制的基础知识 postback是回传 即页面在首次加载后向服务器提交数据,然后服务器把处理好的数据传递到客户端并显示出来,就叫postback, ispostback只是一 ...

  6. linux ftp 搭建和相关问题解决

    1. 查看是否安装vsftprpm –qa|grep vsftpd如果出现 vsftpd-2.0.5-16.el5_5.1 说明已经安装 vsftp 安装vsftpyum -y install vsf ...

  7. java四种创建对象的方法

    1.用new语句创建对象,这是最常见的创建对象的方法.   2.运用反射手段,调用java.lang.Class或者java.lang.reflect.Constructor类的newInstance ...

  8. VS2012 利用正则统计项目代码行数

    原文:VS2012 利用正则统计项目代码行数 #开头和/开头或者空行都不计入代码量,  搜索出来以后最后一行就是代码行数了:

  9. POJ2524 Ubiquitous Religions(并查集)

    题目链接. 分析: 给定 n 个点和 m 条无项边,求连通分量的数量.用并查集很简单. #include <iostream> #include <cstdio> #inclu ...

  10. HDU 1045 Fire Net(图匹配)

    题目大意: 这个是以前做过的一道DFS题目,当时是完全暴力写的. 给你一个N代表是N*N的矩阵,矩阵内 ‘X’代表墙, ‘.’代表通道. 问这个矩阵内最多可以放几个碉堡, 碉堡不能在同一行或者同一列, ...