怎样扩展Brush的pattern和Pen的Style?(200分)

  • 主题发起人 主题发起人 danceofwind
  • 开始时间 开始时间
D

danceofwind

Unregistered / Unconfirmed
GUEST, unregistred user!
一般Brush的填充样式和Pen的线形只有几种,
但是大多的画矢量图的软件,如AutoCAD,MapInfo等,
都提供了很多的填充样式和线性,这是怎么实现的呢?

请各位指点一二,如有相关源码就更好了。
先奉上200大洋,以后再加。
 
用TBrush的Bitmap属性实现。
 
TBrush 封装了一个 Bitmap ,就是提供多种填充模式的。CreateDIBPatternBrushPt 函数就是
让用户自定义填充位图。
Pen 的话估计要用到 ExtCreatePen 函数了。但是我没有亲自做过,《Windows API 大全 For VB5》
上有一个这样的例子。
 
同意关于Brush的Bitmap说法。
我的实现都是自己定义一个高一个层次的TGeoPen、TGeoBrush类,然后灾实现自己的扩展
图样和线形。
TGeoPen = class(TObject)
Style : integer;
Width : integer;
......
end;
为什么我不直接从TPen或TBrush中直接继承呢?请大家思考。
另外,画线型有许多的技巧,如铁路线、平行线等。有空大家一起交流。
 
终于连上了!
吕兄:
能不能再详细点,谢谢!
有源码吗?谢谢!
 
填充好办:d5自己的例子。
var
Bitmap: TBitmap;
begin
Bitmap := TBitmap.Create;
try
Bitmap.LoadFromFile('MyBitmap.bmp');
Form1.Canvas.Brush.Bitmap := Bitmap;
Form1.Canvas.FillRect(Rect(0,0,100,100));
finally
Form1.Canvas.Brush.Bitmap := nil;
Bitmap.Free;
end;

end;
 
继续。 :)
 
我等到花儿也谢了!
呵呵!
 
不同意
Bitmap ,太小了,8*8
 
>>danceofwind
你可以把需求提得更详细,我们再一起讨论。
 
>>吕雪松
我想知道的是自定义填充模式和自定义线型的实现方法。
比如如何画铁路线、如何用铁路线画多边形等,就像
MapInfo里的线形和填充模式。
 
后退
顶部