gpt4 book ai didi

java - 位图崩溃并显示 "Cannot generate texture from the bitmap"消息

转载 作者:行者123 更新时间:2023-12-01 04:31:45 25 4
gpt4 key购买 nike

我正在开发带有动画的简单应用程序。我使用标准 View 。在 onDraw 方法中,我的应用程序绘制背景(存储为位图)和几个 Sprite 。在主循环中,我需要修改背景位图(附有代码)。我使用 setPixel() 方法。当我尝试更改位图时,我有时会在 LogCat 中收到这样的消息:“无法从位图生成纹理”。之后,bacground 仍然出现在屏幕上,但我既不能使用 getPixel() 也不能使用 setPixel() 方法。我发现一些提示,这是因为位图被回收了,但我在我的应用程序中添加了一些控件,并且在此“崩溃”之后 bitmap.isRecycled() 仍然为 false,而 bitmap.isMutable() 仍然为 true。所以,我不知道问题出在哪里。

public void drawOnBmp (float xF, float yF, float r) {       
float[][] kolo;
float xP, yP;
float xStart, yStart;

xStart = xF - r / 2;
yStart = yF - r / 2;
kolo = new float[(int)r + 1][(int)r + 1];
for (int i = 0; i < 360; i++) {
xP = r / 2 + (float)(r / 2 * Math.cos(2 * Math.PI * (double)i / 360));
yP = r / 2 + (float)(r / 2 * Math.sin(2 * Math.PI * (double)i / 360));
kolo[(int)xP][(int)yP] = 1;
}
boolean start;
for (int i = 0; i < (int)r + 1; i++) {
start = false;
for (int j = 0; j < (int)r + 1; j++) {
if (kolo[i][j] == 1)
if (start == false) start = true;
else if (j >= r / 2) break;
if (start == true) kolo[i][j] = 1;
}
}
// obraz is a bitmap with background
for (int i = 0; i < (int)r; i++) {
for (int j = 0; j < (int)r; j++) {
if(kolo[i][j] == 1 && (int)xStart + i >= 0 && (int)yStart + j >= 0 &&
(int)xStart + i < obraz.getWidth() && (int)yStart + j < obraz.getHeight())
obraz.setPixel((int)xStart + i, (int)yStart + j, 0);
}
}
}

}

最佳答案

我遇到了同样的问题。尚未解决,但这可能对任何人都有用。

一些提示来自google.group's线程

What's interesting is that it seems to be related to the Hardware rendering introduced with Android 3.x. Setting the layer type to software for the respective View that does the drawing of the bitmap, fixes the issue.

所以设置

view.setLayerType(View.LAYER_TYPE_SOFTWARE, null);

确实对我有用,但在我的应用程序中它影响了性能,所以我必须使用View.LAYER_TYPE_HARDWARE

我仍在寻找问题的解决方案和根源。如果发现的话会更新。也欢迎任何其他信息。

关于java - 位图崩溃并显示 "Cannot generate texture from the bitmap"消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17907606/

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