代码之家  ›  专栏  ›  技术社区  ›  Christian

在android中创建图像并将其转换为ImageButton

  •  0
  • Christian  · 技术社区  · 14 年前

    我使用以下代码的目的是创建一个半白半黑的图像,并将其放在一个按钮上。

    int height = 100;
    int width = 100;
    
    quadratImage = Bitmap.createBitmap(
            width, 
            height, 
            Bitmap.Config.ALPHA_8);
    for (int x = 0; x < width; x++){
        for (int y = 0; y < height; y++){
            int color;
    
            if (x< 50){
    
                color = R.color.black;
    
            }
            else{
                color = R.color.white;
            }
    
            quadratImage.setPixel(
                    x, y, color);
        }
    }
    quadratImage.prepareToDraw();
    imageButton.setImageBitmap(quadratImage);
    

    我的颜色定义为:

    <color name="black">#000000</color>
    <color name="white">#ffffff</color>
    
    2 回复  |  直到 14 年前
        1
  •  1
  •   Yoni Samlan    14 年前

    首先,当直接绘制位图时,颜色的int不是颜色的资源ID,而是ARGB实际颜色值的十六进制表示(例如,0xff000000表示黑色,0xffffff表示白色)。您还可以通过getResources().getColor(colorResourceId)获取此值。

    另外,不要试图一个像素一个像素地直接绘制位图,而是学习使用Android的画布工具——你可以简单地用白色填充画布,然后drawRect(http://developer.Android.com/reference/Android/graphics/Canvas.html#drawRect(float,float,float,float,Android.graphics.Paint))一个黑色矩形到屏幕的另一半。与嵌套循环相比,它的代码要少得多,而且系统可以使用硬件加速和其他快捷方式优化画布绘制,而不是痛苦地逐像素形成整个位图。

        2
  •  1
  •   NickT    14 年前

    如果你想把一张图片分成四张,那就不行了,你可以把它分成两张半黑半白。

    您需要在if(x<50)(以及其他条件)支架内进行测试,以便根据y值改变颜色。

    Resources res = this.getResources();
    

    在上面某处,然后

    color = res.getColor(R.color.black);
    

    对白人来说