5
我试图展示一张图片,该图片可以放大和平移,并且可以随着指南针读数旋转。通过下面的代码,所有这三种行为都是有用的,但它们相互影响。在Android画布中同时旋转,平移和缩放位图
这里是我想达到的目标:
1.绕屏幕中心
2.规模而使画面的相同部分在中心
3.泛在画面所需位置
这里是实际上是与下面的代码发生的事情:
1.旋转如预期运作,屏幕周围
2.缩放作品的中心,但它扩展围绕中心的图片
3.翻译只打算如果angle
是零,否则它朝着一个错误的方向
// the center of the view port
float centerX = screen.right/2;
float centerY = screen.bottom/2;
Matrix m = new Matrix();
m.preRotate(angle, centerX, centerY);
m.preScale(mScaleFactor, mScaleFactor, centerX, centerY);
// scaling the amount of translation,
// rotating the translation here gave crazy results
float x = mPosX/mScaleFactor;
float y = mPosY/mScaleFactor;
m.preTranslate(x, y);
canvas.drawBitmap(pic, m, null);
如果我翻译第一,后来旋转的作品,翻译作品如预期,但旋转不在身边中心视图端口了。
如何应用所有三种转换,而不会相互影响?
旋转翻译似乎只是抵消旋转,但我也有这种感觉,这就是我需要d。 Android矩阵是3x3,所以我猜他们已经是仿射变换? – modemuser
那么也许尝试直接设置矩阵,而不是使用preRotate,preScale方法?所以你的矩阵应该像 – Dan
以上的帖子中的编辑一样。使用此矩阵,平移可以工作,但缩放也会旋转图片,旋转也会缩放图片,旋转发生在图片的一角。这就像whac-a-mole,但是感谢你的输入。 – modemuser