Android 大 canvas 具有多个转换坐标无需触摸即可滚动到特定图形
Android large canvas with multiple translated coordinates scroll to particular drawing without touch
在 android 中使用自定义视图,宽度和高度更大,为 1000x1000,并包裹在水平滚动视图中。并使用 canvas.drawPath(path, paint)
绘制路径
代码片段
<HorizontalScrollView
android:id="@+id/horizontalScrollView"
android:layout_width="125dp"
android:layout_height="200dp">
<LinearLayout
android:id="@+id/childLinear"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<CustomCanvas
android:id="@+id/canvas"
android:layout_width="1000dp"
android:layout_height="1000dp" />
</LinearLayout>
</HorizontalScrollView>
在开始绘制路径之前,使用canvas.translate(width / 2f, height / 2f)将原点移动到canvas的中心。
有一个用于滚动的小 horizontalscroll 视口,并且
need to scroll the drawPath line always to be centered in the
scrollview viewport.
坐标平移后,起始x,y向中心移动,根据条件进行多次平移。
如何计算线条的原始 x,y 位置并滚动到该绘图?
谢谢,帮助感激。
我自己弄清楚了,只是存储了视图 x,y 和 canvas 翻译的 x,y 之间的差异,如下所示。
var offsetX = width/2f
var offsetY = height/2f
translate(width/2f,height/2f)
offsetX+= 100
offsetY+= 100
translate(100,100)
所有canvas操作结束,offsetX、offsetY将在视图中有最后绘制的坐标。
在 android 中使用自定义视图,宽度和高度更大,为 1000x1000,并包裹在水平滚动视图中。并使用 canvas.drawPath(path, paint)
绘制路径代码片段
<HorizontalScrollView
android:id="@+id/horizontalScrollView"
android:layout_width="125dp"
android:layout_height="200dp">
<LinearLayout
android:id="@+id/childLinear"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<CustomCanvas
android:id="@+id/canvas"
android:layout_width="1000dp"
android:layout_height="1000dp" />
</LinearLayout>
</HorizontalScrollView>
在开始绘制路径之前,使用canvas.translate(width / 2f, height / 2f)将原点移动到canvas的中心。
有一个用于滚动的小 horizontalscroll 视口,并且
need to scroll the drawPath line always to be centered in the scrollview viewport.
坐标平移后,起始x,y向中心移动,根据条件进行多次平移。
如何计算线条的原始 x,y 位置并滚动到该绘图?
谢谢,帮助感激。
我自己弄清楚了,只是存储了视图 x,y 和 canvas 翻译的 x,y 之间的差异,如下所示。
var offsetX = width/2f
var offsetY = height/2f
translate(width/2f,height/2f)
offsetX+= 100
offsetY+= 100
translate(100,100)
所有canvas操作结束,offsetX、offsetY将在视图中有最后绘制的坐标。