android - 如何在android中绘制位图?

标签 android canvas bitmap

我正在尝试弄清楚如何在 android 中绘制位图,并保留这些已更改位图的副本以用于撤消功能。

Bitmap b = ...
Paint p = new Paint();
canvas.drawBitmap(b, new Matrix(), null);
canvas.drawCircle(0,0,20,20);
//does Bitmap b have the circle drawn on it next time?

或者如何在用 Canvas 绘制位图后获取位图(我想保留一堆位图,其中包含 Canvas 绘制应用的更改)?也许我的做法完全错误。

最佳答案

使用new Canvas(Bitmap bitmap)Canvas 提供一个 Bitmap,它将包含您的绘图操作的结果。

您使用 drawBitmapCanvas 上绘制的原始 Bitmap 永远不会被修改。

用户完成每个操作后,您可能会:

  • 在内存中保存已完成操作的列表
  • 使用 Bitmap.compress 将中间结果保存到外部存储

另一种方法是使用 LayerDrawable将连续的绘图操作堆叠在一起。您可以想象允许用户禁用每个已完成的单独操作。

关于android - 如何在android中绘制位图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4160149/

相关文章:

android - 我使用基于 Qt 5.10.0 的 QtCreator 创建了 .apk,它成功安装但无法在 Android Oreo 8.1 上启动

android - 为什么这个 BindingAdapter 在 Kotlin 中不起作用?

python - plot_surface : get the x, y,z值写在右下角

javascript - HTML5 Canvas Base64 错误

flash - AS3-从 1 个 BitmapData 对象(加载的 PNG)复制透明度并应用于另一个?

android - fitsSystemWindows ="true"在调用 setContentView() 后不起作用

android - 带防伪、token、cookie 和参数的 Http post

javascript - 来自 getImageData 的 RGB 值未定义

c# - 现有图形转换为位图

c# - 给定一个颜色对象列表,找到出现频率最高/最少的颜色,并将其作为颜色对象返回