区域填充(100分)

  • 主题发起人 主题发起人 吴优
  • 开始时间 开始时间

吴优

Unregistered / Unconfirmed
GUEST, unregistred user!
使用Brush.Style可以在region里填充斜线、网格等,可却不能调节斜线或网格的
间距,当region为文字且字体较小时,如果不缩小填充线的间距就看不清楚了,怎样
调节这间距呢?
 
自已画他的结构。,行不
 
使用自定义Brush Pattern:
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;
 
对,用LLD的方法
 
用LLD的方法的话每种间距就得用一个bmp文件,那怎么得了啊

1.取得文字路径
BeginPath
TextOut
EndPath
2.路径转为区域
PathToRegion
3.在该区域内绘图
if PtInRegion then //判断点是否在区域内
SetPixel... //自定义算法绘制填充图
 
动态产生一个小的空位图,然后在空位图用Canvas.LineTo等等绘图语句画上你所需的Brush
再用LLD产生Brush的方法。
 
用shaofun的方法问题已解决了,不过 SetPixel的速度有点...
IamWLJ888的思路似乎不错,能具体点吗?比如怎样“用LLD产生Brush”呢?
 
第3步改为
用SelectClipPath函数限制绘图区域,用LineTo绘制填充线,这样是不是快多了
 
接受答案了.
 

Similar threads

D
回复
0
查看
824
DelphiTeacher的专栏
D
D
回复
0
查看
911
DelphiTeacher的专栏
D
D
回复
0
查看
868
DelphiTeacher的专栏
D
D
回复
0
查看
840
DelphiTeacher的专栏
D
后退
顶部