【问题标题】:Drawing bunch of rotated rectangles on android canvas在 android 画布上绘制一堆旋转的矩形
【发布时间】:2016-08-05 00:36:09
【问题描述】:

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

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

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

【问题讨论】:

  • 要么save()你的画布,rotate()它,画你的矩形,最后restore()画布,或者通过调用Canvas#drawPath来绘制一个旋转的Path对象持有你的矩形,但我认为第一个选项会更快
  • 谢谢你,pskink,为这两个建议。我已经在我的程序中实现了第一个,并且成功了。

标签: java android canvas rectangles


【解决方案1】:

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

大概是这样的:

  //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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-27
    • 1970-01-01
    • 1970-01-01
    • 2016-07-20
    • 1970-01-01
    • 2013-08-26
    相关资源
    最近更新 更多