我有一个任务是在画布上绘制许多矩形,但是它们都有一个旋转角度,它们必须在画布上旋转。我在搜索此问题的解决方案时遇到的许多建议表明了绘制矩形并旋转画布的方法(Canvas.rotate(angle)),但它会旋转所有画布,并且只能使用一个矩形。什么是在画布上绘制许多旋转矩形的最佳方法?由于时间效率和内存,我想绘制矩形(单色,带油漆),但不绘制位图。
我目前要做的主要方法是创建一系列画布,并在每个画布上绘制一个矩形,并考虑矩形的角度旋转画布。我认为这不是一种聪明的方式,因为许多画布和每个画布我应该创建一个单独的SurfaceHolder
,这是一个烂摊子......
请注意,对于每个矩形,我都有4个角的坐标,宽度,高度,中心,角度。
答案 0 :(得分:4)
您可以旋转画布以绘制每个矩形,然后恢复原始方向。然后为下一个矩形设置新的旋转,绘制,存储和重复。
大约这个:
//Save and rotate canvas
canvas.save();
canvas.rotate(angle, pivotX, pivotY);
canvas.drawRect(...);
//restore canvas
canvas.restore();
// rotate and draw the second rectangle
canvas.rotate(angle, pivotX, pivotY);
canvas.drawRect(...);
canvas.restore();
// repeat as necessary
其中'angle'对于每个矩形都不同。