canvas.drawBitmap没有绘制任何东西

时间:2014-01-13 00:29:08

标签: android android-canvas draw

我已为onDragShadow覆盖了DragShadowBuilder

@Override
    public void onDrawShadow(Canvas canvas) {
        super.onDrawShadow(canvas);
        Bitmap bitmap = InGameActivity.getRandomBitmap();
        Rect source = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());
        canvas.drawBitmap(bitmap, source, source, null);

    }

我已经确认位图不是null但是当我拖动时,没有显示任何内容。有什么想法吗?

2 个答案:

答案 0 :(得分:2)

如果你想按原样绘制位图(即你想要整个事物),请使用:

canvas.drawBitmap(bitmap, null, source, null);

第二个参数用于指定要绘制的位图子集的位置(如果不需要子集,则可以为null)。如果你将src和dst(第二和第三个参数)设置为同一个对象,我希望方法中存在冲突。

答案 1 :(得分:1)

清单:

  1. 位图是否有效,即不是全部透明或与背景颜色相同?您可以在Android Studio调试器中轻松查看。

  2. 位图范围内的源矩形(即参数2,而不是上面容易显示的3)是不是?您可以将其设置为null,这可以是一个很好的调试步骤。

  3. 您的目标矩形是否在画布的范围内?

  4. 你有第四个参数'paint',它具有低alpha值吗?尝试'paint.setAlpha(255)'或使用'null'作为第4个参数。

  5. 您是否在控制台中看到此消息? “OpenGLRenderer:位图太大而无法上传到纹理中”?如果是,请参阅:"Bitmap too large to be uploaded into a texture"