如何画我所需要的线?详情请进... (200分)

  • 主题发起人 manmanchong
  • 开始时间
M

manmanchong

Unregistered / Unconfirmed
GUEST, unregistred user!
传统的线的样式只有psSolid,psDash等7种,我现在想要用指定的图片来画线,
画水平直线的时候好处理,关键是任意倾斜的时候没有办法处理,曲线、
弧线就更不可以了!希望各位大侠帮帮忙!可以qq联系:5153817
 
就象mapinfo的用指定线型来画线,线的样式可以各种各样.不知在delphi中如何实现...
 
来自:Another_eYes, 时间:2002-11-24 14:02:00, ID:1455408
-----------------------------------------------------------------
用ExtCreatePen建立一个GEOMETRIC 的pen, 这样画出来的线型可以由图片构成。 简单的自
定义线型可以用ExtCreatePen的PS_USERSTYLE加一个线型图样数组来完成.

要使用的话也很简单:
VAR
Pen, Old: HPEN;
begin
Pen := ExtCreatePen(....);
Old := SelectObject(Canvas.Handle, Pen);
Canvas.MoveTo(0, 0);
Canvas.LineTo(50, 50);
DeleteObject(SelectObject(Canvas.Handle, Old));
 
procedure TForm1.Button1Click(Sender: TObject);
VAR
Pen, Old: HPEN;
MyLogBrush: LOGBRUSH;
begin

MyLogBrush.lbStyle:=BS_Pattern;
MyLogBrush.lbColor:=DIB_RGB_COLORS;
MyLogBrush.lbHatch:=Image1.Picture.Bitmap.Handle;

Pen := ExtCreatePen(PS_GEOMETRIC or 0 or PS_SOLID or PS_JOIN_BEVEL,
5,MyLogBrush,0,nil);
Old := SelectObject(Canvas.Handle, Pen);
Canvas.MoveTo(0, 0);
Canvas.LineTo(50, 50);
DeleteObject(SelectObject(Canvas.Handle, Old));

end;
 
to zw84611:
你这样只能画水平线时才有作用,一旦线是倾斜得或者曲线就根本画不了,因为创建得
画笔得图象是水平得。画笔图象不会随着线得弯曲而弯曲啊!
 
你现在是什么问题?
你用图形来画线,那你的图形最好是一个像素高的。
 
我现在想实现象mapinfo中的效果一样,就是可以自定义线型,系统提供的线型只有7种,我
想用指定的图片来定义我的线型。
 
高手帮帮忙啊!up!
 
这个问题我也想了好久了,比如要画用一段铁路,久设置线型为铁路,或者自己定义,
然后再屏幕上不管画弧形,画斜线,都是铁路的样子,可以定义平行线型来画平行线等,
到现在我也没能实现
关注
 
to :DickWu
呵呵,原来你也和我一样啊,我要的就是这种功能,不知道你有什么思路啊?
 
顶部