Android 旋转矩形和理解 Canvas

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

我想我很困惑当 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/

相关文章:

android - 了解OkHttp publicsuffixes.gz

javascript - HTML5 拖放不起作用

javascript - 如何在点击事件中更改 html5 Canvas 的填充颜色?

c++ - 确定两个矩形是否相互重叠?

c# - 在 MonoGame 中绘制矩形

java - 动态合并背景

android - 如何从表面 View 内部完成 Activity?

android - WorkManager 的 ForceStopRunnable 中的 SQLiteException

javascript - 网页中的可旋转 3D 模型

c# - 排序矩形列表