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的中心。

有一个用于滚动的小 horizo​​ntalscroll 视口,并且

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将在视图中有最后绘制的坐标。