2012-04-03 76 views
2

我正在做我自己的像素计算在屏幕上绘图,并有一个精灵位图(一个文件中的4x2图像)。每张图片都是100x100,整个文件是400x200。使用下面的方法,我的画不拉位图的右侧部分,并在scren布局是不完全正确:位图密度导致问题

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

自:API等级1

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

注意:如果该涂料含有其生成 延伸超出该位图的原始宽度/高度(例如 BlurMaskFilter)的掩模的maskfilter,则位图将被吸引,好像它是在一个 着色器与CLAMP模式。因此,原始的宽度/高度之外的颜色将是边缘颜色的复制。

该函数忽略与位图相关的密度。这是 ,因为源矩形和目标矩形坐标空间的密度均为 ,所以必须已经应用适当的 比例因子。

参数

位图>将位图绘制

来源>可能为null。位图的子集要绘制

DST>,该位将被缩小/转换为适合

漆的长方形>可能为null。用油漆绘制位图

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); 

的文件明确地说密度被忽略,但为什么我的形象被缩放?

+0

你究竟是如何加载图片[0]?你有没有尝试getResources()。openRawResource(imageId)? – Renard 2012-04-03 08:37:13

+0

此刻我还没有收到代码,稍后会进行检查。感谢您的建议。 – cjk 2012-04-03 12:40:17

+0

@Renard - 这样做的窍门,虽然现在我重新介绍Android只是试图帮助我处理不同的密度。尽管如此,它让精灵变得非常痛苦...... – cjk 2012-04-03 20:58:40

回答

1

Renard

到底是如何在加载pics[0]?你有没有试过getResources().openRawResource(imageId)

这解决了我的问题。