【问题标题】:How can I create one large Bitmap from lots of smaller ones in code?如何从代码中的许多较小的位图创建一个大的位图?
【发布时间】:2016-02-11 14:05:45
【问题描述】:
for (int i = 0; i < mYTileCount; i++) {
            for (int j = 0; j < mXTileCount; j++) {
                int num = mTileGrid[j][i];
                canvas.drawBitmap(Bitmap.createScaledBitmap(mTileArray[num],              mTileSize, mTileSize, false), mXOffset, mYOffset, mPaint);
                mXOffset+=mTileSize;
            }
            mXOffset = 0;
            mYOffset+=mTileSize;
        }

这是我用来在画布上绘制多个位图以创建 tilemap 的代码,但不是 canvas.drawbitmap 我想用它们制作一个大位图

【问题讨论】:

    标签: java android canvas bitmap


    【解决方案1】:

    使用由位图支持的画布。创建一个正确大小的新位图,然后调用 new Canvas(newBitmap) 创建一个绘制到该新位图的 Canvas。然后将您在上面发布的代码与该画布一起使用。

    【讨论】:

      【解决方案2】:

      如果您的所有位图都完美地平铺在一个矩形区域中,您可以创建一个适合每个较小位图的所需尺寸的新位图,然后只需将每个较小位图的像素复制到具有正确偏移量的较大位图中.您可以在位图上使用 getPixel 和 setPixel 来做到这一点。我不会介绍所有不同的优化策略,但这肯定是一个可行的解决方案,它完全绕过了对 Canvas 的需求。

      【讨论】:

      • 使用“for”循环遍历二维像素数组。从您的代码示例看来,您已经熟悉 for 循环。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-17
      • 1970-01-01
      • 1970-01-01
      • 2017-04-04
      • 1970-01-01
      相关资源
      最近更新 更多