gpt4 book ai didi

java - 使用 Canvas 绘制位图在 Android View 中不起作用

转载 作者:行者123 更新时间:2023-12-01 13:42:06 25 4
gpt4 key购买 nike

我正在尝试使用 onDraw 方法和 Canvas 在位图中绘制一些项目并将其缓存以再次绘制,并且不要再次调用 onDraw

这是我的代码的一部分:

@Override
protected void onDraw(Canvas canvas) {

super.onDraw(canvas);

if (mCacheDrawing == null) {
mCacheDrawing = Bitmap.createBitmap(mScrollWidth, mScrollHeight, Config.RGB_565);
canvas.setBitmap(mCacheDrawing);

for (int i = 0; i < mIcons.size(); i++) {

prepareItem(canvas, paint, mIcons.get(i));
}

canvas.save();
} else {
canvas.setBitmap(mCacheDrawing);
}
}

代码无法正常工作并显示空白屏幕,有人可以帮助我吗?

编辑:我找到了以下帖子,它帮助我解决了问题>> https://groups.google.com/forum/#!topic/android-beginners/6pO8SJN3CTY

我现在的工作代码如下:

@Override
protected void onDraw(Canvas canvas) {

super.onDraw(canvas);

if (mCacheDrawing == null) {

mCacheDrawing = Bitmap.createBitmap(mScrollWidth, mScrollHeight, Config.RGB_565);
mCanvas = new Canvas(mCacheDrawing);
for (int i = 0; i < mIcons.size(); i++) {

prepareItem(mCanvas, paint, mIcons.get(i));
}
}

canvas.drawBitmap(mCacheDrawing,new Rect (0,0, mScrollWidth, mScrollHeight), new Rect (0,0, mScrollWidth, mScrollHeight), paint);
}

最佳答案

嗯,我无法弄清楚你的代码的功能,因为它是一个部分的 fragment ,但我能弄清楚的是原因。快速检查

  1. 如果您尝试从 View 中绘制位图,请确保启用绘图缓存/
  2. canvas.drawBitmap ,这是用于在 Canvas 上绘制位图的 API,而不是 setBitmap

您可以相应地使用 Canvas 的保存和恢复方法。

关于java - 使用 Canvas 绘制位图在 Android View 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20654584/

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