Android 旋转矩形并理解 Canvas

Android Rotating Rectangle and understanding the Canvas

我正在考虑制作如下所示的东西:

它基本上是左上角的一个矩形形状,它已经旋转,然后在它下面有两个,像这样平铺。 我已经尝试过但就是做不到,基本上我使用:

int x = getWidth();
int y = getHeight();
canvas.save();
canvas.rotate(-45);
canvas.drawRect(x/2, y/2, x/2+100, y/2+40, paint);
canvas.restore();

而且我注意到应该是靠近屏幕中心旋转的矩形,而不是屏幕右上角的矩形。当我尝试做类似于 (0,0, 100,100) 的事情时,我根本没有得到任何矩形。

我想我很困惑 canvas 的旋转完成后坐标系是否会发生变化,以及在 android 上获取上图的最简单方法是什么(除了在 photoshop 中创建它并添加 png)。

单个参数 rotate(angle) 将使用 0,0 作为轴心点。

如果你想围绕你的对象旋转,你应该计算它上面的一些点来旋转并使用 3 个参数 rotate(angle, pivotX, pivotY),即:

int x = getWidth();
int y = getHeight();
canvas.save();
canvas.rotate(-45, x / 2, y / 2);
canvas.drawRect(x / 2, y / 2, x / 2 + 100, y / 2 + 40, paint);
canvas.restore();

我做你的设计只是为了好玩:

int x = getWidth();
canvas.rotate(-45);
canvas.drawRect(-x, 0, x, h, green);
canvas.drawRect(-x, h, 0, 2 * h, purple);
canvas.drawRect(0, h, x, 2 * h, blue);

其中 h 是矩形的高度。