文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>Delphi下的GDI+编程[2] 绘制直线

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              //指定实线。 

相关阅读 更多 +
排行榜 更多 +
找茬脑洞的世界安卓版

找茬脑洞的世界安卓版

休闲益智 下载
滑板英雄跑酷2手游

滑板英雄跑酷2手游

休闲益智 下载
披萨对对看下载

披萨对对看下载

休闲益智 下载