ChatGPT解决这个技术问题 Extra ChatGPT

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

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


b
bigstones

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

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

以下是有关该主题的官方文档:Custom Drawing


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

不要使用 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 选项本身。