在 android canvas 上绘制一堆旋转的矩形
Drawing bunch of rotated rectangles on android canvas
我有一个任务要在 canvas 上绘制许多矩形,但它们都有一个旋转角度,它们必须在 canvas 上旋转。在搜索此问题的解决方案时,我 运行 提出的许多建议指出了绘制矩形并旋转 canvas(Canvas.rotate(角度))的方法,但它旋转了所有 canvas 且仅适用于一个矩形。在 canvas 上绘制许多旋转矩形的最佳方法是什么?由于时间效率和内存,我想绘制矩形(单色,带画图),但不绘制位图。
我目前要做的主要方法是创建一个 canvases 的负载并在每个上绘制一个矩形并根据矩形的角度旋转 canvases。我认为这不是一个聪明的方法,因为有很多 canvas,我应该为每个人创建一个单独的 SurfaceHolder
,这是一团糟......
请注意,对于每个矩形,我都有其所有 4 个角的坐标、宽度、高度、中心、角度。
您可以旋转canvas绘制每个矩形,然后恢复原来的方向。然后为下一个矩形设置新的旋转,绘制、存储和重复。
大约是这样的:
//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' 不同。
我有一个任务要在 canvas 上绘制许多矩形,但它们都有一个旋转角度,它们必须在 canvas 上旋转。在搜索此问题的解决方案时,我 运行 提出的许多建议指出了绘制矩形并旋转 canvas(Canvas.rotate(角度))的方法,但它旋转了所有 canvas 且仅适用于一个矩形。在 canvas 上绘制许多旋转矩形的最佳方法是什么?由于时间效率和内存,我想绘制矩形(单色,带画图),但不绘制位图。
我目前要做的主要方法是创建一个 canvases 的负载并在每个上绘制一个矩形并根据矩形的角度旋转 canvases。我认为这不是一个聪明的方法,因为有很多 canvas,我应该为每个人创建一个单独的 SurfaceHolder
,这是一团糟......
请注意,对于每个矩形,我都有其所有 4 个角的坐标、宽度、高度、中心、角度。
您可以旋转canvas绘制每个矩形,然后恢复原来的方向。然后为下一个矩形设置新的旋转,绘制、存储和重复。
大约是这样的:
//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' 不同。