我正在进行自己的像素计算以在屏幕上绘图,并且有一个精灵位图(一个文件中有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模式的着色器。因此原来的颜色 宽度/高度将是复制的边缘颜色。
此函数忽略与位图关联的密度。这是 因为源和目标矩形坐标空间在 他们各自的密度,所以必须已经适当 应用比例因子。
参数
位图>要绘制的位图
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);
文档明确表示忽略了密度,但为什么我的图像会被缩放?
答案 0 :(得分:1)