位图密度导致问题

时间:2012-04-03 06:37:26

标签: android canvas bitmap

我正在进行自己的像素计算以在屏幕上绘图,并且有一个精灵位图(一个文件中有4x2图像)。每个图像为100x100,整个文件为400x200。使用以下方法,我的绘图不是拉动位图的右侧部分,并且scren上的位置不是很正确:

public void drawBitmap(Bitmap bitmap, Rect src, RectF dst, Paint paint)
  

自:API Level 1

     

绘制指定的位图,自动缩放/平移以填充   目标矩形。如果源矩形不为null,则为空   指定要绘制的位图的子集。

     

注意:如果paint包含一个maskfilter,它会生成一个mask   超出位图的原始宽度/高度(例如   BlurMaskFilter),然后将绘制位图,就像它在a中一样   具有CLAMP模式的着色器。因此原来的颜色   宽度/高度将是复制的边缘颜色。

     

此函数忽略与位图关联的密度。这是   因为源和目标矩形坐标空间在   他们各自的密度,所以必须已经适当   应用比例因子。

     

参数

     

位图&g​​t;要绘制的位图

     

src>可能为空。要绘制的位图的子集

     

dst>位图将缩放/转换为适合

的矩形      

paint>可能为空。用于绘制位图的绘画

Rect source = new Rect();
    source.left = (this.currentFrame % 4) * 100;
    source.right = source.left + 100;
    source.top = (this.currentFrame / 4) * 100;
    source.bottom = source.top + 100;

    Rect dest = new Rect();
    dest.top = (int) top;
    dest.left = (int) left;
    dest.right = dest.left + 100;
    dest.bottom = dest.top + 100;

    // draw current frame onto canvas
    //canvas.drawBitmap(pics[this.currentFrame], left, top, painter);
    canvas.drawBitmap(pics[0], source, dest, painter);

文档明确表示忽略了密度,但为什么我的图像会被缩放?

1 个答案:

答案 0 :(得分:1)

根据Renard

你究竟是如何加载pics[0]的?你试过getResources().openRawResource(imageId)吗?

这解决了我的问题。