我正在考虑制作如下所示的东西:
它基本上是左上角的一个矩形形状,它已经旋转,然后在它下面有两个,像它一样平铺。 我尝试过这样做,但就是无法完成,基本上我使用:
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
是矩形的高度。
关于Android 旋转矩形和理解 Canvas ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33205747/