位图不会显示在画布上

时间:2012-07-20 15:14:53

标签: android android-canvas

我目前正在开发适用于Android的小游戏。我正在使用Canvas及其drawBitmap方法来绘制游戏级别。为此,我有点移植了XNA原理(所以更新 - 绘制循环等)。

我还添加了“drawStaticParts”方法。我使用这种方法只画一次某些部分。在Update-Draw循环开始之前调用此方法。在这个方法中,我(使用Canvas)绘制到Bitmap上。这个位图稍后用于在绘制动态部分之前“恢复”Draw中的旧状态(就像调用drawColor(Color.Black)一样)。

这完全没问题。但仅适用于背景,也是使用drawBitmap方法绘制的。一旦我尝试添加其他位图,它们就不会显示出来。我已经检查过背景是否可以覆盖其他位图,但是背景绘制调用在任何其他drawBitmap调用之前发生。我也没有任何例外或类似情况。

以下是有问题的代码片段:

    public void drawStaticParts(Canvas c) {
    c.drawBitmap(TextureManager.getTexture(Element.getBackgroundID(), backgroundImg), null, new RectF(0, 0, Element.getResolution_width(), Element.getResolution_height()), null);
    for(int i = 0; i < width; i++)
    {
        for(int j = 0; j < height; j++)
        {
            Element temp = spielfeld[i][j];
            if(temp != null)
            {
                if(Element.isStatic(temp))
                {
                    float x = i * Element.getElement_width();
                    float y = j * Element.getElement_height();
                    RectF place = new RectF(x, y, Element.getElement_width(), Element.getElement_height());
                    Log.w("MS:doDraw", "Draw at " + x + ", " + y + " with w=" + Element.getElement_width() + " and h=" + Element.getElement_height());
                    c.drawBitmap(TextureManager.getTexture(temp.getTextureID(), sceneryID), null, place, null);
                }
            }
        }
    }
}

我检查了所有有问题的值:一切都很好。假设宽度和高度均为40,坐标也适合。我不知道更进一步。

我将永远感激任何形式的帮助/建议。提前谢谢。

PS:我也尝试了一些类似问题的线程中提到的解决方案,但没有任何效果。

1 个答案:

答案 0 :(得分:2)

你不能只画一次静态部件..

你应该画出每个循环

因为即使每次绘制动态部件时它们都是静态的,你都会覆盖当前的画布,因此你无法看到静态部件。

编辑:那么问题应该在

TextureManager.getTexture(temp.getTextureID(), sceneryID)

检查参数......