我需要在特定点旋转图像,然后将其转换为屏幕上的特定点 我要旋转它的点位于图片的中心。
翻译有效,但轮换没有。
我有一个位图矢量,我正在使用Canvas和Matrix。
代码:
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);
}
答案 0 :(得分:1)
尝试更改您的轮播/翻译调用(按此顺序):
matrix.setTranslate(position.x,position.y);
matrix.preRotate((float)angle,finalMap.getWidth()/2-1,0);
它无法按照您当前的方式工作的原因是,您的setTranslate()调用正在丢弃您之前执行的旋转,只是将其替换为在单位矩阵上执行的转换。以“set”前缀开头的矩阵变换方法只会应用转换,就像在它们之前没有发生任何事情一样。
如果您想阅读更多内容,这是一个有用的答案:https://stackoverflow.com/a/8197896/2464728
答案 1 :(得分:0)
旋转不是什么意思?怎么没有像你期望的那样做? 我最初想知道在y旋转点使用0。