Delphi下的GDI+编程[2] 绘制直线
时间:2010-10-10 来源:巅枫
例一效果图:
在GDI+中,绘制直线是通过TGPGraphics类的DrawLine方法实现的,此类的一些方法如下:
DrawLine(线条)
DrawRectangle(矩形)
DrawEllipse(椭圆)
DrawPolygon(多边形)
DrawArc(弧形)
DrawCurve(基数样条)
DrawBezier(贝塞尔样条)
当然,要想在程序上画出来我们还需要一个TGPPen类,此类也有一些方法,如下:
SetStartCap(设置起始笔帽)
SetEndCap(设置末端笔帽)
SetDashStyle(设置画笔类型)
SetColor(设置画笔颜色)
SetWidth(设置画笔宽)
步骤:
新建工程,窗口宽和高都设为250好了,再编辑Form1的OnPaint事件代码,如下:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; type TForm1 = class(TForm) procedure FormPaint(Sender: TObject); end; var Form1: TForm1; implementation {$R *.dfm} uses GDIPOBJ, GDIPAPI; {加入这两个单元} procedure TForm1.FormPaint(Sender: TObject); var g: TGPGraphics; {定义图形类变量} p: TGPPen; {定义画笔类变量} begin g := TGPGraphics.Create(Canvas.Handle); {创建图形对象,参数为模块句柄,这里用的的画布句柄} p := TGPPen.Create(MakeColor(255,0,0),2); {创建画笔对象,参数1为颜色,参数2为笔宽,可以只留一个参数1,参数2默认为1} g.Clear(MakeColor(255,255,255)); {用指定颜色清扫背景,这里用的是白色,你看例二的图片就是因为没有用到这句,所以颜色有点发灰} p.SetColor(aclBlue); {设置颜色} p.SetWidth(10); {设置笔宽} g.DrawLine(p,20,40,200,40); {参数是整数,参数1、2为线头距左、距上, 参数3、4为线尾距左、距上。} g.DrawLine(p,MakePoint(20,60),MakePoint(200,60)); {参数是点(整数),也就是线头的那一点(X,Y),还有就是线尾的那一点(X,Y)} g.DrawLine(p,20.9,80.0,200.9,80.0); {参数是小数,可以使数值更加精确,参数1、2为线头距左、距上,参数3、4为线尾距左、距上。} g.DrawLine(p,MakePoint(20.9,100.0),MakePoint(200.9,100.0)); {参数是点(小数),可以使数值更加精确,也就是线头的那一点(X,Y),还有就是线尾的那一点(X,Y)} g.Free; {释放图形对象} p.Free; {释放画笔对象} end;
例二效果图:
//线帽 var g: TGPGraphics; p: TGPPen; begin g := TGPGraphics.Create(Canvas.Handle); p:= TGPPen.Create(aclBlue, 8); p.SetStartCap(LineCapArrowAnchor); {起点线帽,这里是箭头状锚头帽} p.SetEndCap(LineCapRoundAnchor); {终点线帽,这里是圆形锚头帽} g.DrawLine(p, 20, 20, 200, 175); p.Free; g.Free; end; -------------------------------------------------------------------------------- 线帽样式表: LineCapAnchorMask //指定用于检查线帽是否为锚头帽的掩码。 LineCapArrowAnchor //指定箭头状锚头帽。 LineCapCustom //指定自定义线帽。 LineCapDiamondAnchor //指定菱形锚头帽。 LineCapFlat //指定平线帽。 LineCapNoAnchor //指定没有锚。 LineCapRound //指定圆线帽。 LineCapRoundAnchor //指定圆锚头帽。 LineCapSquare //指定方线帽。 LineCapSquareAnchor //指定方锚头帽。 LineCapTriangle //指定三角线帽。
例三效果图:
//虚线样式 var g: TGPGraphics; p: TGPPen; begin g := TGPGraphics.Create(Canvas.Handle); p := TGPPen.Create(MakeColor(255,255,0,0),3); g.DrawLine(p, 11, 11, 333, 11); {实线} p.SetDashStyle(DashStyleDashDot); {设置画笔类型,这里设置为虚线型} g.DrawLine(p, 11, 33, 333, 33); {绘制任何形状都是可以的} p.Free; g.Free; end;
例四效果图:
//自定义虚线样式 var g: TGPGraphics; p: TGPPen; const dash: array[0..3] of Single = (5,2,15,10); {虚线样式数组, 数组维数大小任意} begin g := TGPGraphics.Create(Canvas.Handle); p := TGPPen.Create(MakeColor(255,255,0,0),3); g.DrawLine(p, 11, 11, 333, 11); p.SetDashPattern(@dash, Length(dash)); {设置虚线} g.DrawLine(p, 11, 33, 333, 33); p.Free; g.Free; end; -------------------------------------------------------------------------------- 虚线样式表: DashStyleCustom //指定用户定义的自定义划线段样式。 DashStyleDash //指定由划线段组成的直线。 DashStyleDashDot //指定由重复的划线点图案构成的直线。 DashStyleDashDotDot //指定由重复的划线点点图案构成的直线。 DashStyleDot //指定由点构成的直线。 DashStyleSolid //指定实线。
相关阅读 更多 +