android中位图的缩放和转换

android中位图的缩放和转换,android,image-processing,bitmap,scaling,Android,Image Processing,Bitmap,Scaling,我试图出售位图,并在每一步翻译它 如果我们看一下下面的代码,我正在绘制一个图像,转换和缩放它,然后反向执行相同的操作,以便恢复原始配置。但是在应用这些操作之后,我确实得到了原始的缩放图像(比例因子1),但是图像被转换到了不同的位置 你能指出正确的方法吗?(在上面的示例中,如何达到原始配置?) 您应该只使用Canvas方法进行缩放和转换,这样您就可以利用save()和restore()API来完成所需的操作。例如: protected void onDraw(Canvas canvas) {

我试图出售位图,并在每一步翻译它

如果我们看一下下面的代码,我正在绘制一个图像,转换和缩放它,然后反向执行相同的操作,以便恢复原始配置。但是在应用这些操作之后,我确实得到了原始的缩放图像(比例因子1),但是图像被转换到了不同的位置

你能指出正确的方法吗?(在上面的示例中,如何达到原始配置?)


您应该只使用
Canvas
方法进行缩放和转换,这样您就可以利用
save()
restore()
API来完成所需的操作。例如:

protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);

    //Save the current state of the canvas
    canvas.save();

    scale = (float) screenWidth / 201.0f;

    canvas.translate(-40, -40);
    canvas.scale(scale, scale);
    canvas.drawBitmap(bitMap, 0, 0, paint);

    //Restore back to the state it was when last saved
    canvas.restore();

    canvas.drawColor(0, Mode.CLEAR);
    canvas.drawBitmap(bitMap, 0, 0, paint);
}

我认为原始代码的问题可能是因为缩放和转换使用缩放/转换点的方式。如果您在操作之间/为操作指定了正确的轴心点,一切都会好起来。

这解决了我的问题,但有任何关于我的代码不起作用的指针吗?请参阅以下链接,它将帮助您[在此处输入链接描述][1][1]:@JohnSakthivel-感谢提供的信息
矩阵。setXXX
将首先重置矩阵,和设定值
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);

    //Save the current state of the canvas
    canvas.save();

    scale = (float) screenWidth / 201.0f;

    canvas.translate(-40, -40);
    canvas.scale(scale, scale);
    canvas.drawBitmap(bitMap, 0, 0, paint);

    //Restore back to the state it was when last saved
    canvas.restore();

    canvas.drawColor(0, Mode.CLEAR);
    canvas.drawBitmap(bitMap, 0, 0, paint);
}