首页 新闻 会员 周边 捐助

c# winform的简单问题

0
悬赏园豆:30 [已解决问题] 解决于 2009-09-06 14:06

最近要写个winform的图像处理 现在的目的是将多边形内填充上颜色,我用的方法就是网上最多的种子法我的代码是:

public void fushi(int x,int y)
{
  if (img.GetPixel(x, y) != biankuangcolor&&img.GetPixel(x, y) != tianchongcolor)
{
img.SetPixel(x, y, Color.Red);
//pictureBox1.Image = img;
//pictureBox1.Refresh();
fushi(x-1, y);
fushi(x +1, y);
fushi(x, y - 1);
fushi(x, y + 1);
}
}

 

然后在主程序中找个种子点引用 !

我试了当填充小图像是没有问题,但是填充大图像会报错!

报堆栈溢出 !我查了老赵的关于尾递归的博文 但是不知道这种算法怎么实现尾递归!

请问各位大侠有没有其他方法或是如何实现尾递归?

问题补充: 大家放心不是代码问题 这个我肯定 就是递归次数多产生的问题
为森的主页 为森 | 小虾三级 | 园豆:579
提问于:2009-09-03 23:57
< >
分享
最佳答案
0

为什么一定要递归,直接循环不可以吗?

收获园豆:20
eaglet | 专家六级 |园豆:17139 | 2009-09-04 07:47
其他回答(1)
0

public void fushi(int x,int y)
{
  if (img.GetPixel(x, y) != biankuangcolor&&img.GetPixel(x, y) != tianchongcolor)
{
img.SetPixel(x, y, Color.Red);
//pictureBox1.Image = img;
//pictureBox1.Refresh();
fushi(x-1, y);
fushi(x +1, y);
fushi(x, y - 1);
fushi(x, y + 1);
}
}

既然是报堆栈溢出,肯定是递归的没边了...哈哈..最起码在你的递归中,你得满足点是在你的图形范围内的条件啊。

收获园豆:10
邢少 | 园豆:10926 (专家六级) | 2009-09-04 09:53
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册