gpt4 book ai didi

java - 在Android中实现类似bucket的方法

转载 作者:行者123 更新时间:2023-12-02 08:19:19 25 4
gpt4 key购买 nike

我创建了一个用于在 Android 中绘图的应用程序。我想要一个类似于 Microsoft Paint 的水桶工具的工具 - 该工具将用所选颜色填充封闭区域。所以点击后,我写道:

boolean[][] didVisit = new boolean[getWidth()][getHeight()];
visit ((int)event.getX(), (int)event.getY(), didVisit, mBitmap.getPixel((int)event.getX(), (int)event.getY()));

访问方式为:

private void visit (int x, int y, boolean[][] didVisit, int color)
{
if ( x < 0 || x >= didVisit.length || y < 0 || y >= didVisit[0].length )
{
return;
}
if ( mBitmap.getPixel(x,y) != color )
return;
if ( didVisit[x][y] )
return;
didVisit[x][y] = true;
mBitmap.setPixel(x, y, p.getColor());
visit(x-1,y,didVisit,color);
visit(x,y+1,didVisit,color);
visit(x+1,y,didVisit,color);
visit(x,y-1,didVisit,color);
}

但是,这会导致应用程序崩溃(强制关闭)。我很困惑。我检查了几十遍,还是看不出是什么原因导致强制关闭的。

我很乐意提供任何帮助。提前致谢。

最佳答案

我认为您的应用程序因堆栈溢出而崩溃。即使对于 30x30 图像,该算法也会进行深度为 900 的递归调用!我不确定 Android 的堆栈大小有多大,但我很确定您应该重新设计算法以避免递归。

更新:根据您的评论,我写的所有内容都是真实的。这个算法行不通。

关于java - 在Android中实现类似bucket的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5765619/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com