Java 使用比屏幕大得多的画布
我正在尝试在Android上绘制一个图形,我想知道绘制这些图形的最佳方法是什么。整个数据集可能相对较大(2k*2k点),在绘图中缩放和移动应该非常快。大多数情况下,当用户放大数据时,只会绘制一小部分数据 我现在的想法是将整个情节画在一块大画布上,但将其剪辑到屏幕上可见的部分,以便最终只画出该部分。我发现Android的2D绘图API有些混乱,我不确定这是否真的是一种可行的方法,以及我将如何执行它 因此,我的问题是:Java 使用比屏幕大得多的画布,java,android,graphics,canvas,drawing,Java,Android,Graphics,Canvas,Drawing,我正在尝试在Android上绘制一个图形,我想知道绘制这些图形的最佳方法是什么。整个数据集可能相对较大(2k*2k点),在绘图中缩放和移动应该非常快。大多数情况下,当用户放大数据时,只会绘制一小部分数据 我现在的想法是将整个情节画在一块大画布上,但将其剪辑到屏幕上可见的部分,以便最终只画出该部分。我发现Android的2D绘图API有些混乱,我不确定这是否真的是一种可行的方法,以及我将如何执行它 因此,我的问题是: 在比屏幕大得多的画布上画图,并使用剪辑仅显示相关部分,这是一个好主意吗 我如何
- 在比屏幕大得多的画布上画图,并使用剪辑仅显示相关部分,这是一个好主意吗李>
- 我如何创建一个更大的画布,如何选择应该绘制哪些部分
画布的经验来看,我想你会发现这应该很好。现在,如果你想在内存中保留“5平方英里”的画布,你肯定要找到更好的方法来管理它
如何创建更大的画布和
我应该如何选择哪些零件
被抽签
我希望当用户通过覆盖onTouchEvent
方法触摸屏幕时,您将创建自己的“滚动”方法。基本上,您需要跟踪起点X和Y,并在屏幕上移动画布时跟踪该值。为了移动画布
,有许多内置功能,如平移
和缩放
,您可以使用它们在X和Y方向移动画布
,以及在用户放大或缩小时缩放它。我认为在大位图上绘制二维等高线图不是一个好主意,因为您需要一个矢量型图形可以放大和缩小以保持清晰。只有图片可以缩小,但在位图中缩小时,图形会丢失细线或变形
正确的方法是用数学方法来完成这一切,并计算出应该为所需的位置和缩放绘制图形的哪一部分。对线条和文本使用抗锯齿油漆,图形将始终清晰且良好。。。
当用户缩小时,不应绘制某些项目,因为它们无法放入屏幕或会使屏幕混乱。因此,图形将始终针对缩放级别进行优化…您应该从另一个方向开始。不要创建一个巨大的画布,你应该检测出你需要画的是哪一部分,然后只画那一部分
所以基本上你需要一些导航/滚动,你需要在内存中保持从起点的偏移量来计算你在哪里。使用偏移可以轻松地放大和缩小,因为只需将绘图缩放到屏幕上即可