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 //指定实线。
相关阅读 更多 +










