gpt4 book ai didi

java - Canvas 矩阵变换

转载 作者:行者123 更新时间:2023-11-29 07:21:06 25 4
gpt4 key购买 nike

我目前正在开发一款安卓游戏。

我添加了按钮以允许用户在 x 轴上导航相机并放大和缩小。

为此,我使用了以下矩阵代码:

// c is the canvas..
Matrix m = c.getMatrix();
// Make sure that the ground is always at the bottom of the screen
m.setScale(zoom,zoom,0.0f,height);
m.preTranslate(camera_x, 0); // Change offset in x-direction
c.setMatrix(m);

这在模拟器上有效,但在我的真实设备上给我一些奇怪的结果。

谁能告诉我这是怎么回事?我发现使用矩阵很棘手,尤其是因为 Matrix 对象有很多可用选项(pre、post 和 set)。

谢谢

最佳答案

您在 View 的 onDraw 方法中从 canvas.getMatrix() 获得的矩阵已经有一些操作(将 View 缩放到您的显示尺寸并将 View 的坐标转换为 ViewRoot Surface 坐标。

通过使用 matric.setScale() 而不是 pre 或 postScale,您可以将矩阵重置为恒等变换,然后应用缩放。这会导致为 onDraw 设置的初始转换丢失。 matrix.preTranslate() 没问题。

或者,您可以保留 setScale 并使用 canvas.concat(m) 将您的矩阵应用于现有矩阵。

(我也不能直接保持应用转换前后的操作。)

关于java - Canvas 矩阵变换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4391670/

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