繁体   English   中英

在特定点旋转和平移

[英]Rotation and translation at a specific point

我需要在特定点旋转图像,然后将其平移到屏幕上的特定点。
我要旋转的点在图片的中心。

转换有效,但旋转无效。

我有一个位图矢量,并且正在使用“画布”和“矩阵”。

码:

for (Bitmap image:images)
{
    //rotation  
    double angle=Math.toDegrees(rotation);
    Matrix matrix=new Matrix();
    matrix.postRotate((float)angle,finalMap.getWidth()/2-1,0);

    //transform     
    matrix.setTranslate(position.x,position.y);

    //print on screen       
    c.drawBitmap(image,matrix, paint);
}

尝试按以下顺序更改轮换/翻译呼叫(完全按照以下顺序进行):

matrix.setTranslate(position.x,position.y);
matrix.preRotate((float)angle,finalMap.getWidth()/2-1,0);

它之所以无法像您目前所拥有的那样起作用,是因为您的setTranslate()调用正在丢弃您之前所做的旋转,而只是将其替换为对单位矩阵执行的转换。 以“ set”前缀开头的矩阵转换方法将仅应用转换,就好像之前没有发生任何事情一样。

如果您想了解更多,这是一个有用的答案: https : //stackoverflow.com/a/8197896/2464728

“轮换”不是什么意思? 怎么会做不到您期望的? 我最初想知道将0用作y旋转点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM