代码之家  ›  专栏  ›  技术社区  ›  Zsombor Erdődy-Nagy

如何加载原始位图,而不在Android上缩放?

  •  1
  • Zsombor Erdődy-Nagy  · 技术社区  · 15 年前

    我有一个位图文件,用作视图的遮罩。在白色背景上有多个不同颜色的矩形区域。当用户触摸视图时,我使用此事件的X和Y坐标查找遮罩的颜色(不显示),并根据返回的颜色代码执行操作。

    问题是:用BitmapFactory加载此掩码会导致位图对象被缩放。这样颜色就有点变形了。如果我有一个颜色为(155,155,0)的实心矩形,那么它将是(148,158,0),(150,154,0)等等。但我得弄清楚颜色。

    那么,如何加载原始位图,而不进行任何缩放/压缩/诸如此类的操作呢?

    1 回复  |  直到 15 年前
        1
  •  1
  •   Greg    15 年前

    我做了类似的事情,用一个png文件,它存储在R.raw中。用户点击了一个图像,触发了它后面的彩色图像的onTouch事件。

    public static Bitmap loadBitmapFromView(View v)
    {
        Bitmap b = Bitmap.createBitmap( v.getLayoutParams().width, v.getLayoutParams().height, Bitmap.Config.ARGB_8888);
        Canvas c = new Canvas(b);
        v.layout(0, 0, v.getLayoutParams().width, v.getLayoutParams().height);
        v.draw(c);
        return b;
    }
    
    @Override
    public boolean onTouch(View v, MotionEvent event)
    {
        Bitmap b = loadBitmapFromView(v);
        long color = b.getPixel((int)event.getX(), (int)event.getY());
        //check what the color is, act accordingly 
    }