gpt4 book ai didi

java - 如何绘制不规则形状,以便将其用作某种按钮

转载 作者:行者123 更新时间:2023-12-02 12:06:38 28 4
gpt4 key购买 nike

[语言:Java]

我正在尝试将 map 图像上的一组国家/地区转换为按钮。

我尝试在paint.net上绘制图像。我用不同的颜色绘制每个国家,然后寻找那些 rgb,这样我就有每个国家的 x、y 值,甚至是唯一的标识符(某种)。我当时想我可以遍历一个列表,看看我是否点击了它们,但这感觉效率很低。

我还打算向每个国家/地区添加边界框,但也将它们添加到内部,以便我可以更快地检查碰撞(即,这个 x,y 和 是否位于此框内?不?,继续...)

我想到的另一种方法是找出一个国家的最小边界框,然后将其存储为二维数组,即

int [][] countryAsPixels = new int [width][height];

然后我可以将图像存储为矩阵,如

0000000000
0000111000
0001111110
1111111111
1110000000
0000000000

因此 0 不会位于该国家/地区,而 1 则位于该国家/地区。我认为这很好,因为我可以走了

public boolean hasHit(int x, int y){
if(countryAsPixels[x][y] == 1){
return true;
}
return false;
}

不循环遍历每个像素。只需一个查询。但现在我必须存储所有这些没有任何意义的 0。这会浪费内存吗?

注意:我的最终目标是将所有这些国家/地区通过图表链接在一起,并使用 libGDX 运行程序。

我还认为我可以将图像分解为国家/地区,如上面所示,然后使用这些值来分解未绘制的图像(原始 map 图像),然后手动将每个国家/地区构建到 map 上。这会比拥有虚拟覆盖更好吗?

最佳答案

有颜色的想法就可以了。但为什么必须遍历列表呢?您获得点击事件的坐标。并且您将拥有作为表格(2D 数组)的“图像映射”,因此只需收集从点击事件获取的特定坐标处的颜色即可。也许您需要进行一些坐标转换。

更简单的解决方案是拥有(加载)真实图像而不是保留颜色表。使用LibGDX pixmaps。您可以将图像文件直接加载到pixmap中,然后检查特定坐标处的颜色。

通过加载外部图像文件来创建像素图: https://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/graphics/Pixmap.html#Pixmap-com.badlogic.gdx.files.FileHandle-

然后使用 getPixel() 方法获取像素颜色 https://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/graphics/Pixmap.html#getPixel-int-int-

关于java - 如何绘制不规则形状,以便将其用作某种按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46873098/

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