mg.viewport

mg.viewport 对象可以用来读取或设置当前页面的用户可视区(即画布的可见区域)的信息。

  • Type:
interface ViewportAPI {
  center: Vector
  zoom: number
  readonly bound: Rect
  rulerVisible: boolean
  layoutGridVisible: boolean
  layout: Layout
}

center

  • Type: center: Vector
interface Vector {
  readonly x: number
  readonly y: number
}

读取或设置可视区的中心点。例如:

// read
mg.viewport.center
// write
mg.viewport.center = { x: 100, y: 100 }

需要注意的是,你只能通过完全地设置 center 属性来实现对可视区的操作,而无法通过单独设置 center 对象的某个属性来完成对可视区的操作。例如,下面的代码是无效的:

mg.viewport.center.x = 100 // 无效

zoom

  • Type: zoom: number

读取或设置画布的缩放比例,值为 1 代表缩放比例为 100%,值为 0.5 代表缩放比例为 50%。例如:

// read
mg.viewport.zoom
// write
mg.viewport.zoom = 2 // 放大 2 倍

bound

  • Readonly: true
  • Type: bound: Rect
interface Rect {
  readonly x: number
  readonly y: number
  readonly width: number
  readonly height: number
}

bound 相当于可视区的边界信息。其中 bound.xbound.y 描述了可视区左上角的画布坐标。bound.widthbound.height 为可视区的宽高。

rulerVisible

  • Type: boolean

显示标尺。

layoutGridVisible

  • Type: boolean

显示布局网络。

positionOnDom

  • Readonly: true
  • Type: Rect

画布在当前窗口的位置大小。

interface Rect {
  readonly x: number
  readonly y: number
  readonly width: number
  readonly height: number
}

layout

  • Readonly: true
  • Type: Layout

窗口的页面布局,获取页面宽度、左侧列表宽度、画布宽度、右侧属性面板宽度。

interface Layout {
  readonly canvas: number
  readonly leftbar: number
  readonly rightbar: number
  readonly window: number
}

TIP

已废弃,请改用positionOnDom.

scrollAndZoomIntoView

  • Type: (nodes: ReadonlyArray<BaseNode>): void

自动设置 viewport 的坐标,以使得 nodes 在屏幕上可见。