gpt4 book ai didi

android - 在android中缩放和平移位图

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:26:52 25 4
gpt4 key购买 nike

我正在尝试销售位图并在每个步骤中对其进行翻译。

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

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

 protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Matrix matrix = new Matrix();

scale = (float)screenWidth/201.0f;
matrix.setTranslate(-40, -40);
matrix.setScale(scale, scale);

canvas.drawBitmap(bitMap, matrix, paint);

//back to original
canvas.drawColor(0, Mode.CLEAR);
matrix.setScale(1.0f/scale, 1.0f/scale);
matrix.setTranslate(40,40);
canvas.drawBitmap(bitMap, matrix, paint);

}

最佳答案

您应该只使用 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);
}

关于android - 在android中缩放和平移位图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18709360/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com