在 android 画布上绘制一堆旋转的矩形

Dai*_*nis 4 java android canvas rectangles

我的任务是在画布上绘制许多矩形,但它们都有一个旋转角度,它们必须在画布上旋转。我在寻找此问题的解决方案时遇到的许多建议都指出了绘制矩形和旋转画布的方法(Canvas.rotate(angle)),但它会旋转所有画布,并且只能使用一个矩形。在画布上绘制许多旋转矩形的最佳方法是什么?由于时间效率和内存的原因,我想绘制矩形(单色,使用 Paint),而不是位图。

我目前要做的主要方法是创建大量画布并在每个画布上绘制一个矩形,并考虑矩形的角度来旋转画布。我认为这不是一个聪明的方法,因为有很多画布,对于每个画布,我应该创建一个单独的SurfaceHolder,这是一团糟......

请注意,对于每个矩形,我都有其 4 个角的坐标,即宽度、高度、中心、角度。

Gre*_*eek 6

您可以旋转画布以绘制每个矩形,然后恢复原始方向。然后为下一个矩形设置新的旋转,绘制、存储和重复。

大约是这样:

  //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
Run Code Online (Sandbox Code Playgroud)

其中每个矩形的“角度”不同。