在 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' 不同。