坐标系

图层是 Sketch 的构建块。它们在画布(即帧)中的尺寸和位置与描述形状的点坐标分开存储。

帧是一个矩形,描述图层相对于其父图层(例如组或画板,或者如果没有父图层则相对于画布)的位置和大小。帧使用绝对值存储。

直接位于画布上的图层

在下面的示例中,三角形在 .sketch 文件中存储,其帧与检查器中的值相匹配。有关文档结构的更多详细信息,请参阅 文件格式

Coordinates of a triangle placed directly on the canvas

JSON 输出
{
  "_class": "page",
  ...
  "layers": [{
    "_class": "triangle",
    ...
    "frame": {
      ...
      "height": 40,
      "width": 40,
      "x": 0,
      "y": 0
    }
}

具有父图层的图层

当放置在画板中时,三角形的位置相对于它,与检查器中的值相同。

Coordinates of a triangle placed in the same place of the canvas but as part of an artboard.

JSON 输出
{
  "_class": "page",
  ...
  "layers": [{
    "_class": "artboard",
    ...
    "frame": {
      "height": 140,
      "width": 140,
      "x": -50,
      "y": -50
    },
    "layers": [{
      "_class": "triangle",
      ...
      "frame": {
        ...
        "height": 40,
        "width": 40,
        "x": 50,
        "y": 50
      }
    }]
  }]
}

点坐标

形状是图层的內容,由点组成。每个点的坐标相对于图层的帧,使用归一化值,因此当图层的帧发生变化时,它们不需要任何更新。

Triangle coordinates in the Inspector

点坐标是根据帧计算的,生成以下 JSON 输出。

x, y 归一化 x, y 计算
20, 0 0.5, 0 20 / frame.width, 0 / frame.height
40, 40 1, 1 40 / frame.width, 40 / frame.height
0, 40 0, 1 0 / frame.width, 40 / frame.height

注意:归一化值在 0..1 范围内。

JSON 输出
{
  "_class": "page",
  ...
  "layers": [{
    "_class": "triangle",
    ...
    "frame": {
      ...
      "height": 40,
      "width": 40,
      "x": 0,
      "y": 0
    },
    "points": [
      {
        "_class": "curvePoint",
        ...
        "point": "{0.5, 0}"
      },
      {
        "_class": "curvePoint",
        ...
        "point": "{1, 1}"
      },
      {
        "_class": "curvePoint",
        ...
        "point": "{0, 1}"
      }
    ]
  }]
}