比派克还派克——用Pen在Graphics上面画线的若干细节

原创 2006年06月21日 11:15:00

比派克还派克

参考:

GDI+编程10个基本技巧”

"橡皮筋"

用钢笔在画布上画出虚线


要在Graphics对象上画出虚线,以及虚线边框的几何形状,关键全在Pen对象上。


Pen.DashStyle——用于设置虚线样式。该属性接收一个DashStyle枚举。

Dash

点画线

DashDot

点画线点

DashDotDot

点画线点点

Dot

Solid

实线

Custom

用户自定义的线型


protected override void OnPaint(PaintEventArgs e)

{

base.OnPaint (e);


Pen p = new Pen(Color.Red);

p.DashStyle = DashStyle.Dash;


e.Graphics.DrawLine(p, new Point(10, 10), new Point(300, 300));

}



Pen.DashCap——短划线终点的线相样式。该属性接受一个Dash枚举。

Flat

两端均为方形的方相。

Round

两端均为圆角的圆相。

Triangle

两端均为带三角的三角相。


protected override void OnPaint(PaintEventArgs e)

{

base.OnPaint (e);


// Set the SmoothingMode property to smooth the line.

e.Graphics.SmoothingMode =

System.Drawing.Drawing2D.SmoothingMode.AntiAlias;


// Create a new Pen object.

Pen greenPen = new Pen(Color.Green);


// Set the width to 6.

greenPen.Width = 6.0F;


// Set the DashCap to round.

greenPen.DashCap = System.Drawing.Drawing2D.DashCap.Round;


// Create a custom dash pattern.

greenPen.DashPattern = new float[]{4.0F, 2.0F, 1.0F, 3.0F};


// Draw a line.

e.Graphics.DrawLine(greenPen, 20.0F, 20.0F, 100.0F, 240.0F);


// Change the SmoothingMode to none.

e.Graphics.SmoothingMode =

System.Drawing.Drawing2D.SmoothingMode.None;


// Draw another line.

e.Graphics.DrawLine(greenPen, 100.0F, 240.0F, 160.0F, 20.0F);


// Dispose of the custom pen.

greenPen.Dispose();

}


Pen.DashOffset——直线的起点到短划线图案起始处的距离。

Pen.DashPattern——自定义的短划线和空白区域的数组。


给直线画上箭头


Pen.StartCap——直线起点的线相样式。

Pen.EndCap——直线终点的线相样式。


这两个属性都接受LineCap枚举。


protected override void OnPaint(PaintEventArgs e)

{

base.OnPaint (e);

Pen p = new Pen(Color.Red);

p.Width = 20;

p.StartCap = LineCap.RoundAnchor;

p.EndCap = LineCap.DiamondAnchor;


e.Graphics.DrawLine(p, 50, 50, 250, 250);

}


Pen.CustomStartCap——自定义的直线段起点线相样式。

Pen.CustomEndCap——自定义的直线段终点线相样式。

这两个属性接受CustomLineCap对象。


protected override void OnPaint(PaintEventArgs e)

{

base.OnPaint (e);

GraphicsPath hPath = new GraphicsPath();


// Create the outline for our custom end cap.

hPath.AddLine(new Point(0, 0), new Point(0, 5));

hPath.AddLine(new Point(0, 5), new Point(5, 1));

hPath.AddLine(new Point(5, 1), new Point(3, 1));


// Construct the hook-shaped end cap.

CustomLineCap HookCap = new CustomLineCap(null, hPath);


// Set the start cap and end cap of the HookCap to be rounded.

HookCap.SetStrokeCaps(LineCap.Round, LineCap.Round);


// Create a pen and set end custom start and end

// caps to the hook cap.

Pen customCapPen = new Pen(Color.Black, 5);

customCapPen.CustomStartCap = HookCap;

customCapPen.CustomEndCap = HookCap;


// Create a second pen using the start and end caps from

// the hook cap.

Pen capPen = new Pen(Color.Red, 10);

LineCap startCap;

LineCap endCap;

HookCap.GetStrokeCaps(out startCap, out endCap);

capPen.StartCap = startCap;

capPen.EndCap = endCap;


// Create a line to draw.

Point[] points = { new Point(100, 100), new Point(200, 50),

new Point(250, 300) };


// Draw the lines.

e.Graphics.DrawLines(capPen, points);

e.Graphics.DrawLines(customCapPen, points);

}


参考:

GDI+编程10个基本技巧”

"橡皮筋"


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

派克AC890说明书

  • 2016-01-16 10:29
  • 6.29MB
  • 下载

Computer Graphics Project2——画线及画圆

CG Project2

【Computer Graphics】2.直线生成算法(中点画线 算法)

在介绍中点画线算法之前,我们先来看一个概念,增量算法何为增量算法?增量算法就是在一个迭代算法中,如果每一步,x,y值都是用前一步的值加上一个增量来获得。。。。则称增量算法。。DDA就是一个增量算法。下...

PhpDown 派克网版

  • 2004-08-19 15:51
  • 129KB
  • 下载

OpenGL入门示例4——黑色背景绘制彩色点画线

#include //OpenGL实用工具包 #define drawOneLine(x1,y1,x2,y2) glBegin(GL_LINES); glVertex2f((x1),(y1));g...

MFC 菜鸟之问——鼠标移动获取坐标和画线问题

MFC 菜鸟之问??鼠标移动获取坐标和画线问题 2014-01-16-20:44 初学MFC,现做一个鼠标测试软件,希望实现鼠标移动实时获取坐标,在左下角显示X,Y坐标值,并实现按下左键拖动划红...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)