# Image
## 控件功能,类型(普通控件或容器控件),父类控件
用于显示图片的控件。支持设置图片 URL、默认错误备用图,以及将当前图像内容导出为 Base64 字符串。
**类型:** 普通控件
**父类控件:** `bricks.JsWidget`
### 初始化参数
| 参数名 | 类型 | 说明 |
|-------|------|------|
| `url` | String | 图片的 URL 地址,构造时会自动设置到 `
` 元素的 `src` 属性 |
| `default_url` | String | 当图片加载失败时,自动切换为此 URL 显示备用图 |
| `height` | Number (可选) | 设置图片高度(可由 CSS 或 DOM 自动处理) |
| `width` | Number (可选) | 设置图片宽度(可由 CSS 或 DOM 自动处理) |
> 注:所有参数通过 `opts` 对象传入构造函数。
### 主要事件
无显式定义事件,但内部使用了原生 `
` 的 `onerror` 事件来处理加载失败情况:
- **`onerror` → 触发 `set_default_url()`**
当图片加载失败时,自动替换为 `default_url` 指定的备用图片,并清除错误监听以防止循环触发。
---
# Icon
## 控件功能,类型(普通控件或容器控件),父类控件
基于 `Image` 扩展的图标控件,支持字符单位尺寸缩放(`charsize` 基础)、动态大小调整和布局适配。常用于界面中与文字对齐的小图标。
**类型:** 普通控件
**父类控件:** `bricks.Image`
### 初始化参数
| 参数名 | 类型 | 说明 |
|--------|------|------|
| `url` | String | 图标图片地址,继承自 `Image` |
| `rate` | Number | 缩放倍率,默认为 `1`,实际大小 = `charsize * rate` |
| `cwidth` | Number | 占据的字符宽度,默认为 `1` |
| `cheight` | Number | 占据的字符高度,默认为 `1` |
| `dynsize` | Boolean | 是否启用动态尺寸调整,默认为 `true`,根据 `charsize_sizing()` 调整尺寸 |
> 注:`charsize` 来源于 `bricks.app.charsize`,是应用级字体基准单位。
### 主要事件
无独立事件定义,行为主要在初始化和属性变更后通过 `options_parse()` 触发重绘。
- **`options_parse()`**
在控件初始化时调用,用于解析并应用尺寸相关选项,包括设置 URL 和调整大小。
---
# StatedIcon
## 控件功能,类型(普通控件或容器控件),父类控件
状态图标控件,可依据不同状态切换对应图标图像。适用于如开关状态、多态指示器等场景。
**类型:** 普通控件
**父类控件:** `bricks.Icon` (间接继承 `Image`)
### 初始化参数
| 参数名 | 类型 | 说明 |
|--------|------|------|
| `states` | Array<{state: String, url: String}> | 状态数组,每个对象包含一个状态名和对应的图片 URL |
| `state` | String | 初始状态名称;若未指定,则默认使用 `states[0].state` |
| `rate`, `cwidth`, `cheight`, `dynsize` | 同上 | 继承自 `Icon` 的布局与样式参数 |
> 示例:
> ```js
> {
> states: [
> { state: 'normal', url: 'icon-normal.png' },
> { state: 'active', url: 'icon-active.png' }
> ],
> state: 'normal'
> }
> ```
### 主要事件
- **`set_state(state)`**
方法:手动设置当前状态,控件会查找匹配的状态项并更新图片 URL,重新解析选项并渲染。
- 参数:`state` —— 要切换到的状态字符串
- 行为:遍历 `this.states`,找到对应项后调用 `super.options_parse()` 更新视图
---
# BlankIcon
## 控件功能,类型(普通控件或容器控件),父类控件
空白占位图标控件,不显示任何图像,仅作为具有固定字符尺寸的透明占位符,用于布局对齐或动态替换前的预留空间。
**类型:** 普通控件
**父类控件:** `bricks.JsWidget`
### 初始化参数
| 参数名 | 类型 | 说明 |
|--------|------|------|
| `rate` | Number | 尺寸缩放比率,默认为 `1`,影响基于 `charsize` 的计算 |
| `cwidth` | Number | 占据的字符宽度,默认为 `1` |
| `cheight` | Number | 占据的字符高度,默认为 `1` |
| `dynsize` | Boolean | 是否启用动态尺寸调整,默认为 `true`,控制是否响应 `charsize_sizing()` |
### 主要事件
无公开事件或回调。其核心作用是在 UI 布局中保持与其他图标一致的尺寸行为,而不加载任何图像资源。