无论屏幕大小和分辨率如何,都可以校正像素尺寸

时间:2015-09-20 09:32:32

标签: java android canvas matrix bitmap

我在画布上绘制一个这样的位图:

float multiplier = (float) canvas.getWidth() / (float) background.getWidth();
Matrix bgMatrix = new Matrix();
bgMatrix.postScale(multiplier, multiplier);
canvas.drawBitmap(background, bgMatrix, paint);

multiplier用于缩放图像以适合画布。

接下来,我需要在它上面绘制另一个位图,水平对齐中心,垂直高于中心。我像这样计算第二个位图的中心点:

int centerX = (int) (canvas.getWidth() - overlay.getWidth() * multiplier) / 2;
int centerY = (int) (canvas.getHeight() - overlay.getHeight() * multiplier) / 2;

其中overlay是重叠的位图。

到目前为止,一切都很好。下一部分是它变得棘手的地方。我需要从垂直中心点减去39像素(从原始图像测量,"真实像素")以获得正确的坐标。但是,当我缩放图像和Android处理相对于屏幕分辨率和屏幕尺寸的宽度和高度时,我不知道如何在所有设备上使39像素看起来大小相同。

目前我以这种方式绘制叠加图像

Matrix matrix = new Matrix();
matrix.setRotate(rotation, overlay.getWidth() / 2, overlay.getHeight() / 2);
matrix.postScale(multiplier, multiplier);
matrix.postTranslate(centerX, centerY);
canvas.drawBitmap(overlay, matrix, paint);

如何在所有设备上使39像素缩小看起来相同?

0 个答案:

没有答案