如何在旋转后翻译画布以在android中将矩形保持在另一个的中心?

时间:2013-10-18 02:29:54

标签: android canvas rotation transformation

我希望能够在沿着中心旋转文本和矩形之后将其绘制到画布上。所以我正在制作一个测试用例,其中我有一个不旋转的蓝色方块和一个应该旋转的红色方块。它们的大小相同,并且应该共享相同的中心“枢轴点”。我有以下代码:

    Paint p = new Paint();
    p.setColor(Color.CYAN);
    p.setAlpha(200);
    canvas.drawRect(new Rect(100,100,300,300), p);
    canvas.save();
    canvas.rotate(45,250,250);// 250,250 is the center of the blue rectangle
    p.setColor(Color.RED);
    p.setAlpha(100);
    canvas.drawRect(new Rect(100,100,300,300), p);
    canvas.restore();

它给了我一个接近我想要的结果,但我缺少一些数学,因为看起来画布也需要应用翻译。结果如下: result

我缺少什么,以便我可以沿着蓝色矩形的中心旋转红色矩形,它们最终共享相同的中心点,如下所示: desired

1 个答案:

答案 0 :(得分:3)

蓝色矩形的中心错误。

center(x,y) = (left + (width/2), top + (height/2))

注意:width = 200, height = 200所以,center(x,y) = (200,200)

更改为此,并且有效:

canvas.rotate(45,200,200);// 200,200 is the center of the blue rectangle