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

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

【问题讨论】:

    标签: android bitmap drawing android-canvas


    【解决方案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,请参阅stackoverflow.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 选项本身。

    【讨论】:

    猜你喜欢
    • 2012-11-01
    • 2012-11-30
    • 1970-01-01
    • 2014-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-25
    • 1970-01-01
    相关资源
    最近更新 更多