如何用Delphi实现PhotoShop中的魔术棒和套索功能?急!!!(100分)

  • 主题发起人 主题发起人 卷起千堆雪tyn
  • 开始时间 开始时间

卷起千堆雪tyn

Unregistered / Unconfirmed
GUEST, unregistred user!
这不是更哪个工具有关的问题.与delphi本身无关.

魔术棒
点到处A,在点到处四周寻找与A的色彩相近的点,不停的找.字到结束.
瞎说.
 
是不是查找的边界的问题?
 
魔术棒

你得扫描象素点
一般情况扫描某象素点的4邻域就行了
如果当前象素用A[j]表示, 值=x, 这样写:
if (A[j-1]=x) then
选中A[j-1]点
if (A[i-1][j]=x) then
选中A[i-1][j]点
if (A[i+1][j]=x) then
选中A[i+1][j]点
if (A[j+1]=x) then
选中A[j+1]点
明白了吗? (x可以是个范围)


套索

就是扫描亮斑的边缘
如果当前象素用A[j]表示, 值=x, 这样写:
if not((A[j-1]=x)and(A[i-1][j]=x)and(A[i+1][j]=x)and(A[j+1]=x)) then
该点是边缘
明白了吗? (x可以是个范围)


 

Canvas.Brush.Color:=Canvas.Pixels[x, y];
Canvas.Brush.Style:=bsSolid;
Canvas.Pen.Style:=psDot;
Canvas.FloodFill(X, Y, Canvas.Brush.Color,fsBorder)
 
不服气 都不知你要问什么!
 
我以前做过,还得了三等奖,不过代码没有了。
最简单的就是用边界跟踪算法,找本图形学的书看看,多想想就行了。
 
本来就是一个图形学的问题嘛。
 
这个问题是一个com 编程的问题,源程序就不写了现在给你提供一个思路

 
手头有个控件,感兴趣的话来信。
 
CathyEagle:
请寄一份给我,jitao@gzsums.edu.cn 谢谢!
 
我觉得可以这样,首先你可以作一个maskbmp,这是一个二值的bmp,mask你要指定的颜色,再将
这个中间点除掉,再将maskbmp与transbmp重新transbitblt就可以了
 
追踪,追踪,再追踪…
 
魔术棒的算法就是种子填充算法啊
所有的图形学书上都有,去找一本看看吧
 
大哥,请给我一个魔术棒和套索的控件,我毕业设计要用到,很紧急,谢谢。
cxhcx@21cn.com
 
to CathyEagle:
请给我一个魔术棒和套索的控件
lzy291@263.net
 
CathyEagle:
请寄一份给我,suber-nju@263.net谢谢!
 
后退
顶部