Skip to content

转换坐标

世界坐标page 坐标本地坐标内部坐标box 坐标 的互相转换。

支持 转换移动距离、 在 Leafer 中 转换浏览器坐标。另提供了 快速转换 的高性能方法。

转换世界坐标

getPagePoint ( worldPoint: IPointData, relative?: UI, distance?: boolean ): IPointData

获取 page 坐标( 世界坐标page 坐标 )。

getLocalPoint ( worldPoint: IPointData, relative?: UI, distance?: boolean ): IPointData

获取本地坐标( 世界坐标本地坐标 )。

getInnerPoint ( worldPoint: IPointData, relative?: UI, distance?: boolean ): IPointData

获取内部坐标( 世界坐标内部坐标 )。

getBoxPoint ( worldPoint: IPointData, relative?: UI, distance?: boolean ): IPointData

获取 box 坐标( 世界坐标box 坐标 )。

转换 page 坐标

getWorldPointByPage ( point: IPointData, relative?: UI, distance?: boolean ): IPointData

获取世界坐标( page 坐标世界坐标 )。

转换本地坐标

getWorldPointByLocal ( point: IPointData, relative?: UI, distance?: boolean ): IPointData

获取世界坐标( 本地坐标世界坐标 )。

getInnerPointByLocal ( point: IPointData, relative?: UI, distance?: boolean ): IPointData

获取内部坐标( 本地坐标内部坐标 )。

转换内部坐标

getWorldPoint ( innerPoint: IPointData, relative?: UI, distance?: boolean ): IPointData

获取世界坐标( 内部坐标世界坐标 )。

getLocalPointByInner ( point: IPointData, relative?: UI, distance?: boolean ): IPointData

获取本地坐标( 内部坐标本地坐标 )。

getBoxPointByInner ( point: IPointData, relative?: UI, distance?: boolean ): IPointData

获取 box 坐标( 内部坐标box 坐标 )。

转换 box 坐标

getWorldPointByBox ( point: IPointData, relative?: UI, distance?: boolean ): IPointData

获取世界坐标( box 坐标世界坐标 )。

getInnerPointByBox ( point: IPointData, relative?: UI, distance?: boolean ): IPointData

获取内部坐标( box 坐标内部坐标 )。

可选参数说明

相对元素

第二个可选参数:relative?: UI

将 relative 元素假设为世界坐标系,可以实现子级到任意一个父级坐标系之间的转换。

转换移动距离

第三个可选参数: distance?: boolean

直接修改坐标

第四个可选参数:change?: boolean

直接修改传入的坐标返回,可以节省创建新对象的开销。

相关

在 Leafer 中 转换浏览器坐标

归属

UI

示例

获取内部坐标

ts
const rect = new Rect({ x: 50, y: 50, scale: 5 })

const worldPoint = { x: 100, y: 100 }
const innerPoint = rect.getInnerPoint(worldPoint) // {x: 10, y: 10}

获取 frame 坐标

使用第二个可选参数:relative?: UI

将 relative 元素假设为世界坐标系,可以实现子级到任意一个父级坐标系之间的转换。

ts
const frame = new Frame({ x: 200, y: 100, width: 600, height: 800 })

const rect = new Rect({ x: 50, y: 50, scale: 5 })
frame.add(rect)

const innerPoint = { x: 10, y: 10 }
const worldPoint = rect.getWorldPoint(innerPoint) //  {x: 300, y: 200}
const framePoint = rect.getWorldPoint(innerPoint, frame) //  {x: 100, y: 100}

获取内部移动距离

使用第三个可选参数: distance?: boolean

可以转换移动距离、长度。

ts
const rect = new Rect({ x: 50, y: 50, scale: 5 })

const worldMove = { x: 100, y: 100 }
const innerMove = rect.getInnerPoint(worldMove, null, true) // {x: 20, y: 20}

Released under the MIT License.