我有一个任务需要在画布上绘制许多矩形,但是它们都有旋转角度,必须在画布上旋转。在搜索解决此问题的方法时,我遇到了许多建议,指出绘制矩形并旋转画布(Canvas.rotate(angle))的方法,但它会将整个画布旋转,并且仅适用于一个矩形。在画布上绘制许多旋转的矩形的最佳方法是什么?我想绘制矩形(单色,使用Paint),而不是位图,因为这样可以提高时间效率和节省内存。
目前我会采用的主要方法是创建很多画布,每个画布上绘制一个矩形,并考虑矩形的角度旋转画布。我认为这不是一种明智的方式,因为需要创建许多画布,并且对于每个画布都应该创建一个单独的SurfaceHolder,这很麻烦...
请注意,对于每个矩形,我都有其4个角的坐标、宽度、高度、中心和角度。
目前我会采用的主要方法是创建很多画布,每个画布上绘制一个矩形,并考虑矩形的角度旋转画布。我认为这不是一种明智的方式,因为需要创建许多画布,并且对于每个画布都应该创建一个单独的SurfaceHolder,这很麻烦...
请注意,对于每个矩形,我都有其4个角的坐标、宽度、高度、中心和角度。
save()
保存画布状态,然后使用rotate()
旋转画布,接着绘制矩形,最后使用restore()
恢复画布状态;第二种方法是创建一个旋转后的Path
对象来包含你的矩形,并通过调用Canvas#drawPath
方法来绘制它。不过我认为第一种方法会更快。 - pskink