我要用delphi写一个类似win图画板的程序,但遇到问题!请各位高手帮帮忙!! ( 积分: 200 )

  • 主题发起人 未能注册
  • 开始时间

未能注册

Unregistered / Unconfirmed
GUEST, unregistred user!
我要用delphi写一个类似win图画板的程序。
其中的的喷枪和油漆桶,我实在是搞不懂。
我在网上查的资料说喷枪用的是“二维高斯函数”
可是我不懂“二维高斯函数”,也没想到实现的方法。
油漆桶是比较好写…………但是如何确定着色的范围…………确想不通…………
我知道有人提过这个问题,可是我看不懂
最好是有源码或例子,给我。
小弟在这里谢谢个位大哥了!
qq:330741607 magical_li@163.com
 
我要用delphi写一个类似win图画板的程序。
其中的的喷枪和油漆桶,我实在是搞不懂。
我在网上查的资料说喷枪用的是“二维高斯函数”
可是我不懂“二维高斯函数”,也没想到实现的方法。
油漆桶是比较好写…………但是如何确定着色的范围…………确想不通…………
我知道有人提过这个问题,可是我看不懂
最好是有源码或例子,给我。
小弟在这里谢谢个位大哥了!
qq:330741607 magical_li@163.com
 
油漆桶用FloodFill函数看看,这些GDI里面都有的,不需要自己写函数

http://www.delphibbs.com/delphibbs/dispq.asp?lid=364578
关于FloodFill的使用问题

喷枪

http://www.delphibbs.com/delphibbs/dispq.asp?lid=345337
photoshop中的喷枪???

http://www.delphibbs.com/delphibbs/dispq.asp?lid=973857
返璞归真5:实现photoshop里的喷枪效果。

procedure SprayPoints(Dpoint :TPoint; Radians :Integer); //设定喷枪的中心点和喷洒半径
var
i,a,b,temp :Integer;
begin
Randomize;
for i := 0 to Radians do
begin
temp := Random(100);
a := Random(Round(Radians*0.65));
if (temp < 50) then a :=0 - a;
temp := Random(100);
b := Random(Round(Radians*0.65));
if (temp < 50) then b := 0 - b;
if ( a*a + b*b < Sqr(Round(Radians*0.65))) then
Form1.Canvas.Pixels[DPoint.X+a,DPoint.Y+b] :=clBlue;
end;
end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
SprayPoints(Point(x,y),100);
end;
 
用OLE COM+可以解决问题,哈哈
 
FloodFill
函数我试了!
Image1.Canvas.Pen.Color:=clblack;
Image1.Canvas.Floodfill(X,Y,clblack,fsBorder);
可是不知为什么总是不好使…………
 
填充时总是白色…………
 

Similar threads

顶部