# 形状与文本

- Human documentation: [https://docs.univer.ai/zh-CN/guides/slides/features/core/shapes-and-text](https://docs.univer.ai/zh-CN/guides/slides/features/core/shapes-and-text)

- Agent Markdown: [https://docs.univer.ai/zh-CN/guides/slides/features/core/shapes-and-text.md](https://docs.univer.ai/zh-CN/guides/slides/features/core/shapes-and-text.md)

- Requested language: `zh-CN`

- Content language: `zh-CN`

- Documentation version: `1.0.0-rc.0`

- Source: [slides/features/core/shapes-and-text.zh-CN.mdx](https://github.com/dream-num/documentation/blob/dev/content/guides/slides/features/core/shapes-and-text.zh-CN.mdx)

---

Slides 使用共享 Shape 引擎提供可编辑形状、连接线和形状文本。`FSlide.insertShape()` 返回由 Slides 命令管线驱动的形状 Facade。

## 插入形状

```ts
const slide = univerAPI.getActivePresentation()?.getActiveSlide()

if (!slide) {
  throw new Error('No active slide')
}

const shape = slide.insertShape({
  shapeType: univerAPI.Enum.ShapeTypeEnum.RoundRect,
  transform: { left: 80, top: 64, width: 320, height: 120 },
  visible: true,
  selectable: true,
  shapeData: {
    fill: {
      fillType: univerAPI.Enum.ShapeFillEnum.SolidFill,
      color: '#dbeafe',
    },
  },
})
```

Shape 宿主适配器不可用或输入无法创建时，`insertShape()` 可能返回 `null`。插入形状前，请注册 Slides 配置所需的 Shape 依赖。

## 添加富文本

```ts
if (shape) {
  const richText = univerAPI.newRichText()
    .text('Quarterly ')
    .bold('review')

  shape.getText()
    .setRichText(richText)
    .setHorizontalAlign(univerAPI.Enum.HorizontalAlign.CENTER)
    .setVerticalAlign(univerAPI.Enum.VerticalAlign.MIDDLE)
}
```

使用 `slide.getShape(id)` 或 `slide.getShapes()` 获取形状。通用元素方法可更新位置、尺寸、可见性、名称和描述；`slide.deleteElement(shape)` 会删除形状。
