Android旋转矩形并了解Canvas

时间:2015-10-19 02:35:21

标签: android canvas rectangles

我正在考虑制作类似于以下内容的内容:

Image I want

这基本上是左上方的一个矩形形状,它被旋转,然后是两个在它下面,像它一样平铺。 我已经去做了,但是不能完成它,基本上我用了:

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)的事情时,我根本不会得到任何矩形。

我想我对画布的旋转完成时坐标系是否会发生变化感到困惑,以及在Android上获取上图时最简单的方法是什么(除了在photoshop中创建它并加入之外) png)。

1 个答案:

答案 0 :(得分:1)

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

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

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是矩形的高度。