# gdip.toolbarBitmap 库模块帮助文档

## gdip 成员列表 <a id="gdip" href="#gdip">&#x23;</a>

### gdip.toolbarBitmap() <a id="gdip.toolbarBitmap" href="#gdip.toolbarBitmap">&#x23;</a>
[返回对象:gdipToolbarBitmapObject](#gdipToolbarBitmapObject)

### gdip.toolbarBitmap(cx,cy) <a id="gdip.toolbarBitmap" href="#gdip.toolbarBitmap">&#x23;</a>
创建工具条位图生成器。  
@cx,@cy 指定默认的按钮图像宽度与高度，build,save 等函数未指定大小时使用此大小。  
省略全部参数默认为 16,15（VC++ 向导生成的工具条默认大小）。  
仅指定 @cx 则高度与宽度相同。

## gdip.toolbarBitmap 成员列表 <a id="gdip.toolbarBitmap" href="#gdip.toolbarBitmap">&#x23;</a>

工具条位图生成器。  
将 SVG、PNG、ICO、字体图标等按指定按钮大小横向拼接为 VC++ 等原生工具条（toolbar）使用的 BMP 位图。  
同一组图标可生成 16,24,32,48 等多种尺寸，用于按 DPI 加载。  
可生成 32 位（alpha 透明）、24 位、256 色、16 色位图。  
非 32 位位图使用透明色（默认为 0xC0C0C0）表示透明，并自动处理半透明边缘与系统颜色替换问题。

### gdip.toolbarBitmap.decode() <a id="gdip.toolbarBitmap.decode" href="#gdip.toolbarBitmap.decode">&#x23;</a>
[返回对象:gdipbitmapObject](https://www.aardio.com/zh-cn/docs/library-reference/gdip/bitmap.html#gdipbitmapObject)

### gdip.toolbarBitmap.decode(bmpData,keyColor) <a id="gdip.toolbarBitmap.decode" href="#gdip.toolbarBitmap.decode">&#x23;</a>
解码 BMP 等图像数据（支持文件路径、字符串、buffer、string.builder），返回 gdip.bitmap 对象。  
可读取 32 位 BMP 的 alpha 通道（GDI+ 默认忽略此通道）。  
不含 alpha 通道的位图则将 @keyColor（0xRRGGBB 格式）指定的颜色转为透明，  
省略 @keyColor 则使用左上角像素的颜色，@keyColor 为 false 不处理透明色。

## gdipToolbarBitmapObject 成员列表 <a id="gdipToolbarBitmapObject" href="#gdipToolbarBitmapObject">&#x23;</a>

### gdipToolbarBitmapObject.add(image,options) <a id="gdipToolbarBitmapObject.add" href="#gdipToolbarBitmapObject.add">&#x23;</a>
添加按钮图像，返回对象自身。  
@image 可指定：  
- SVG/PNG/ICO/BMP/GIF/JPG 等图像文件路径或内存数据，SVG 也可以直接指定代码。  
- gdip.bitmap 或 gdip.image 对象。  
- 同一图标不同尺寸版本组成的数组，生成各尺寸时自动选用最合适的版本。  
- 绘图函数，参考 addDraw 函数。  
- null 添加空白图像。  
SVG、ICO 与绘图函数在每种尺寸下都会重新绘制，其他位图按 fit 属性缩放。  

@options 可指定按钮命令 ID 字符串（用于生成 rc 脚本），  
或者指定选项表：  
{  
\tid = "ID_FILE_NEW"; // 按钮命令 ID  
\tfit = "auto"; // 位图放入按钮的方式，参考 fit 属性  
\tcolor = 0xFF2B5797; // SVG 中 currentColor 的颜色  
\tkeyColor = 0xC0C0C0; // 将此颜色（0xRRGGBB）转为透明，用于不含 alpha 通道的旧图标  
}

### gdipToolbarBitmapObject.addDir(dir,mask) <a id="gdipToolbarBitmapObject.addDir" href="#gdipToolbarBitmapObject.addDir">&#x23;</a>
按文件名排序添加目录下的所有图像，返回对象自身。  
可选用 @mask 指定通配符，多个用 | 分隔。  
文件名形如 ID_FILE_NEW.svg 或 01_ID_FILE_NEW.svg 时自动作为按钮命令 ID，  
可用数字前缀控制按钮顺序。

### gdipToolbarBitmapObject.addDraw(draw,options) <a id="gdipToolbarBitmapObject.addDraw" href="#gdipToolbarBitmapObject.addDraw">&#x23;</a>
添加由绘图函数生成的图标，返回对象自身。  
每种尺寸都会调用 @draw(graphics,cx,cy) 重新绘制，  
graphics 为 gdip.graphics 对象，已启用抗锯齿并将像素偏移设为 Half（整数坐标对齐像素边界）。  
cx,cy 为按钮图像大小。  
@options 可指定按钮命令 ID 字符串或选项表。

### gdipToolbarBitmapObject.addGlyph(font,glyph,color,options) <a id="gdipToolbarBitmapObject.addGlyph" href="#gdipToolbarBitmapObject.addGlyph">&#x23;</a>
添加字体图标，返回对象自身。  
@font 指定字体名称或 gdip.family 对象，例如 fonts.fontAwesome.family。  
@glyph 指定字体图标字符，例如 '\uF0C7'。  
@color 指定颜色（0xAARRGGBB 或 0xRRGGBB 格式），默认为黑色。  
@options 可指定按钮命令 ID 字符串，或选项表：  
{  
\tid = "ID_FILE_SAVE";  
\tscale = 0.875; // 字体大小相对按钮大小的比例  
}

### gdipToolbarBitmapObject.addSeparator() <a id="gdipToolbarBitmapObject.addSeparator" href="#gdipToolbarBitmapObject.addSeparator">&#x23;</a>
添加分隔符，仅用于 rc 方法生成 rc 脚本，不占用图像位置。  
返回对象自身。

### gdipToolbarBitmapObject.addStrip(image,cellWidth,keyColor) <a id="gdipToolbarBitmapObject.addStrip" href="#gdipToolbarBitmapObject.addStrip">&#x23;</a>
拆分并添加已有的工具条位图（例如旧的 Toolbar.bmp），返回对象自身。  
@image 指定图像路径、数据或 gdip.bitmap 对象，可读取 32 位 BMP 的 alpha 通道。  
@cellWidth 指定原位图中每个按钮的宽度，默认为当前默认按钮宽度。  
@keyColor 指定透明色（0xRRGGBB）。  
省略 @keyColor 时如果原位图不含 alpha 通道，则使用左上角像素颜色作为透明色（与 ImageList 的 CLR_DEFAULT 规则相同），  
@keyColor 为 false 不处理透明色。

### gdipToolbarBitmapObject.addSvg(svg,options) <a id="gdipToolbarBitmapObject.addSvg" href="#gdipToolbarBitmapObject.addSvg">&#x23;</a>
添加 SVG 图标，返回对象自身。  
@svg 指定 SVG 代码或文件路径，每种尺寸都会重新绘制。  
@options 用法与 add 函数相同，可用 color 字段指定 currentColor 的颜色。  
依赖 dotNet.Svg 扩展库。

### gdipToolbarBitmapObject.build() <a id="gdipToolbarBitmapObject.build" href="#gdipToolbarBitmapObject.build">&#x23;</a>
[返回对象:StringBuilderObject](https://www.aardio.com/zh-cn/docs/library-reference/string/builder.html#StringBuilderObject)

### gdipToolbarBitmapObject.build(size,options) <a id="gdipToolbarBitmapObject.build" href="#gdipToolbarBitmapObject.build">&#x23;</a>
生成 BMP 文件数据，返回 string.builder 对象。  
@size 指定按钮图像大小，可指定数值（正方形）、[cx,cy] 或 {cx=;cy=}，省略则使用默认大小。  
@options 可指定位深度 32,24,8,4，或指定选项表：  
{  
\tbpp = 32; // 位深度：32(alpha 透明),24,8(256 色),4(16 色)  
\tkeyColor = 0xC0C0C0; // 透明色（0xRRGGBB），VC++ 工具条请保持默认值  
\tmatteColor = 0xF0F0F0; // 半透明边缘混合的背景色，应接近工具条实际背景色，false 不混合  
\talphaThreshold = 64; // alpha 小于等于此值的像素作为透明像素  
\tpalette = "optimal"; // 16 色调色板："optimal" 优化调色板，"standard" 标准 16 色调色板  
\tdither = false; // 256 色、16 色是否使用误差扩散抖动  
\tprotectColors = [0x808080,0xDFDFDF,0x0000FF,0xFF00FF]; // 会被系统替换为系统颜色的特殊颜色，将被微调 1 级避开  
\tdisabled = false; // 是否生成禁用状态（灰色半透明）位图，也可以指定不透明度  
}

### gdipToolbarBitmapObject.buttons <a id="gdipToolbarBitmapObject.buttons" href="#gdipToolbarBitmapObject.buttons">&#x23;</a>
按钮数组，用于生成 rc 脚本，  
每个元素包含 id 字段或 separator 字段。

### gdipToolbarBitmapObject.clear() <a id="gdipToolbarBitmapObject.clear" href="#gdipToolbarBitmapObject.clear">&#x23;</a>
清空所有按钮图像与按钮

### gdipToolbarBitmapObject.count() <a id="gdipToolbarBitmapObject.count" href="#gdipToolbarBitmapObject.count">&#x23;</a>
返回按钮图像数目

### gdipToolbarBitmapObject.cx <a id="gdipToolbarBitmapObject.cx" href="#gdipToolbarBitmapObject.cx">&#x23;</a>
默认按钮图像宽度，只读

### gdipToolbarBitmapObject.cy <a id="gdipToolbarBitmapObject.cy" href="#gdipToolbarBitmapObject.cy">&#x23;</a>
默认按钮图像高度，只读

### gdipToolbarBitmapObject.fit <a id="gdipToolbarBitmapObject.fit" href="#gdipToolbarBitmapObject.fit">&#x23;</a>
位图放入按钮的方式，影响之后添加的图像，可选值：  
"auto"（默认值）：大小相当则 1:1 原样复制以保持像素清晰（略大一点则裁掉透明边缘），否则保持比例高质量缩放。  
"scale"：保持比例缩放到按钮大小。  
"stretch"：拉伸到按钮大小。  
"center"：不缩放，居中裁剪。

### gdipToolbarBitmapObject.getBitmap() <a id="gdipToolbarBitmapObject.getBitmap" href="#gdipToolbarBitmapObject.getBitmap">&#x23;</a>
[返回对象:gdipbitmapObject](https://www.aardio.com/zh-cn/docs/library-reference/gdip/bitmap.html#gdipbitmapObject)

### gdipToolbarBitmapObject.getBitmap(size,options) <a id="gdipToolbarBitmapObject.getBitmap" href="#gdipToolbarBitmapObject.getBitmap">&#x23;</a>
返回 gdip.bitmap 对象。  
@size 用法与 build 函数相同。  
不指定 @options 返回拼接后的 32 位 alpha 透明原图。  
指定 @options 则按 build 函数相同的参数生成 BMP，再解码返回实际效果的预览图（透明色转为透明）。

### gdipToolbarBitmapObject.getCells(size) <a id="gdipToolbarBitmapObject.getCells" href="#gdipToolbarBitmapObject.getCells">&#x23;</a>
返回指定大小的按钮图像数组以及宽度、高度。  
数组元素为包含 buf,w,h 字段的像素对象，buf 为 BGRA 字节序、非预乘 alpha 的 buffer。  
@size 可指定数值（正方形）、[cx,cy] 或 {cx=;cy=}，省略则使用默认大小。

### gdipToolbarBitmapObject.items <a id="gdipToolbarBitmapObject.items" href="#gdipToolbarBitmapObject.items">&#x23;</a>
按钮图像源数组。  
每个元素的 render(cx,cy) 函数返回指定大小的像素对象。

### gdipToolbarBitmapObject.preview() <a id="gdipToolbarBitmapObject.preview" href="#gdipToolbarBitmapObject.preview">&#x23;</a>
[返回对象:gdipbitmapObject](https://www.aardio.com/zh-cn/docs/library-reference/gdip/bitmap.html#gdipbitmapObject)

### gdipToolbarBitmapObject.preview(sizes,zoom,backgrounds) <a id="gdipToolbarBitmapObject.preview" href="#gdipToolbarBitmapObject.preview">&#x23;</a>
生成预览图，返回 gdip.bitmap 对象。  
每种尺寸在每种背景色上各显示一行，按像素放大以便检查细节。  
@sizes 默认为 [16,24,32,48]，@zoom 默认为 2，  
@backgrounds 为 ARGB 颜色数组，默认为浅色与深色背景。

### gdipToolbarBitmapObject.rc(resName,sizes,bmpPath) <a id="gdipToolbarBitmapObject.rc" href="#gdipToolbarBitmapObject.rc">&#x23;</a>
生成 rc 资源脚本中的 TOOLBAR 资源定义（按钮数、大小与位图保持一致）。  
@resName 指定资源名，例如 "IDR_TOOLBAR{size}"。  
@sizes 可指定单个尺寸或尺寸数组，多个尺寸时资源名不含 {size} 则自动添加 _{size} 后缀。  
可选用 @bmpPath 指定位图路径（可包含 {size}），用于同时生成 BITMAP 资源定义。

### gdipToolbarBitmapObject.save(path,size,options) <a id="gdipToolbarBitmapObject.save" href="#gdipToolbarBitmapObject.save">&#x23;</a>
生成 BMP 文件并存入 @path 指定的路径，成功返回 true。  
@size,@options 用法与 build 函数相同，省略 @options 则生成 32 位 alpha 透明位图。

### gdipToolbarBitmapObject.saveAll(path,sizes,options) <a id="gdipToolbarBitmapObject.saveAll" href="#gdipToolbarBitmapObject.saveAll">&#x23;</a>
生成多个尺寸的 BMP 文件，返回文件路径数组。  
@path 必须包含 {size} 占位符，例如 "/res/toolbar{size}.bmp"。  
@sizes 指定尺寸数组，默认为 [16,24,32,48]。  
@options 用法与 build 函数相同。
