gpt4 book ai didi

android - 位图 - 矩阵操作(缩放、旋转和平移)

转载 作者:搜寻专家 更新时间:2023-11-01 08:03:10 24 4
gpt4 key购买 nike

我需要一些矩阵运算方面的帮助。我想要实现的是:

  • 缩小规模
  • 移动到特定位置
  • 旋转一定程度(在位图的中心)

我的代码目前看起来像这样:

            Matrix matrix = new Matrix();
matrix.preRotate(mShip.getRotation(), mShip.getX() + mShip.getCurrentBitmap().getWidth()/2f, mShip.getY() + mShip.getCurrentBitmap().getHeight()/2f);
matrix.setScale((1.0f * mShip.getWidth() / mShip.getCurrentBitmap().getWidth()), (1.0f * mShip.getHeight() / mShip.getCurrentBitmap().getHeight()));
matrix.postTranslate(mShip.getX(), mShip.getY());
mCanvas.drawBitmap(mShip.getCurrentBitmap(), matrix, mBasicPaint);

但是旋转中心错误,我不知道如何解决这个问题 - 我已经四处查看了 SO 但只发现了类似的问题,没有解决这个问题。我认为我可能必须将其中一个操作应用于另一个值,因为它们是按顺序执行的,但我不知道该怎么做。

最佳答案

试试这段代码:

Matrix matrix = new Matrix();
matrix.setTranslate(-mShip.getCurrentBitmap().getWidth()/2f, -mShip.getCurrentBitmap().getHeight()/2f);
matrix.postRotate(mShip.getRotation());
matrix.postTranslate(mShip.getX(), mShip.getY());
matrix.postScale((1.0f * mShip.getWidth() / mShip.getCurrentBitmap().getWidth()), (1.0f * mShip.getHeight() / mShip.getCurrentBitmap().getHeight()), mShip.getX(), mShip.getY());

关于android - 位图 - 矩阵操作(缩放、旋转和平移),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18162827/

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