在 Android 中通过画布创建一个空位图并进行绘图

Posted

技术标签:

【中文标题】在 Android 中通过画布创建一个空位图并进行绘图【英文标题】:Creating an empty bitmap and drawing though canvas in Android 【发布时间】:2011-08-05 12:58:50 【问题描述】:

我想创建一个空位图并为该位图设置一个画布,然后在该位图上绘制任何形状。

【问题讨论】:

【参考方案1】:

这可能比你想象的要简单:

int w = WIDTH_PX, h = HEIGHT_PX;

Bitmap.Config conf = Bitmap.Config.ARGB_8888; // see other conf types
Bitmap bmp = Bitmap.createBitmap(w, h, conf); // this creates a MUTABLE bitmap
Canvas canvas = new Canvas(bmp);

// ready to draw on that bitmap through that canvas

这是我在该主题上找到的一系列教程:Drawing with Canvas Series

【讨论】:

如果我在一个单独的类中创建它,我将如何在另一个类中引用该位图。例如:Bitmap text = BitmapFactory.decodeResource(mContext.getResources(), 这里放什么?);我需要一个 opengl 动态壁纸中的 textView。提前致谢 嗨@bigstones,当我创建位图时,我正在关注您在 onSizeChanged() 中创建位图的代码,我收到 OutOfMemoryError,请参阅***.com/questions/24303759/… 在使用 SurfaceView 时如何在另一个线程中完成? 只要确保 x 和 y 不为零,否则会抛出异常非法参数【参考方案2】:

不要使用 Bitmap.Config.ARGB_8888

改为使用 int w = WIDTH_PX, h = HEIGHT_PX;

Bitmap.Config conf = Bitmap.Config.ARGB_4444; // see other conf types
Bitmap bmp = Bitmap.createBitmap(w, h, conf); // this creates a MUTABLE bitmap
Canvas canvas = new Canvas(bmp);

// ready to draw on that bitmap through that canvas

在处理更多位图或大型位图时,ARGB_8888 会使您陷入 OutOfMemory 问题。 或者更好的是,尽量避免使用 ARGB 选项本身。

【讨论】:

ARGB_4444 现已弃用 (developer.android.com/reference/android/graphics/…)

以上是关于在 Android 中通过画布创建一个空位图并进行绘图的主要内容,如果未能解决你的问题,请参考以下文章

在 Android 中通过 Hilt 进行依赖项注入

在android中通过firebase进行Facebook登录时身份验证失败

画布上的水平滚动。 HTML5

在android中通过蓝牙进行多连接

如何在 Android 中通过 Firebase Childs 按升序对列表进行排序

在 Android 中通过蓝牙接收音频