图形程序中的自定义线型

本文介绍了在GDI/GDI+中如何实现自定义线型,通过创建线型图元和线型类,重载MoveTo和LineTo,实现专业线型如铁路线、长城线等。线型转角和接缝需精细处理,确保无缝接合。同时,还开发了用于制作图元的小工具。
摘要由CSDN通过智能技术生成

GDI/GID+中提供的线型总是有限的,在一些行业应用领域,需要有非常专业的线型定义,如“铁路线”、“长城线”、“断崖”、“国界线”等,这就需要进行自定义的开发。

我的实现思路是:先制作一些线型的图元(图元就是线型的一个片断),矢量格式,然后用线型类来调用,重载系统的MoveTo和LineTo,调用时不用关心底层实现,只要设好线型类型就行。这样设计可以比较方便地实现自定义线型,不过在线型的转角和接缝处要精细处理,保证无缝接合

另外专为制作图元开发了一套小工具。

TGeoSequinType = (GeoNull,GeoPoint,GeoLine,GeoPoly,GeoEllipse);
{
 每个线型中的基本组成单位,目前只有点、线、圆和多边形四个类型
    每个Sequin有线颜色和填充颜色,无线宽和填充样式
}
TGeoSequin = class(TObject)
private
 PtList : TList;      //包含PPoint类型
 procedure DrawLine(Canvas: TCanvas;dX,dY: double;dSlope: double;dOffsetLength,dEndLength: double;nFlag : integer;nIndex: integer);
     procedure DrawETOBLine(Canvas: TCanvas;dSeqX1,dSeqY1,dSlope:double;X,Y:double;CurX,CurY:double;nFlag:integer);
 procedure Lin

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值