位图缓存
位图是一个位数组,用于指定像素矩形数组中每个像素的颜色。
位图对象用来存储与设备无关的图像和与应用程序无关的图像的标准格式。 缓存位图对象以针对特定设备上显示进行优化的格式存储位图。 缓存位图对象简称存图中文名称 | 英文名称 | 示例 | 作用 |
文件取流 | GdipCreateStreamOnFile | 文件取流(名称,读写,@流) | 基于文件获取指向流对象接口的指针。 |
文件取图 | GdipCreateBitmapFromFile | 文件取图(宽文件名,@位图) | 基于图像文件创建位图对象。格式包括 BMP、GIF、JPEG、PNG、TIFF、Exif、WMF 和 EMF。 |
配置取图 | GdipCreateBitmapFromFileICM | 配置取图(宽文件名,@位图) | 基于ICM配置文件的图像文件创建位图对象。 |
数据取图 | GdipCreateBitmapFromStream | 数据取图(流,@位图) | 基于流创建位图对象。此函数使用ICM。 |
配流取图 | GdipCreateBitmapFromStreamICM | 配流取图(流,@位图) | 基于ICM流创建位图对象。 |
定位取图 | GdipCreateBitmapFromScan0 | 定位取图(宽,高,步幅,格式,字节组,@位图) | 根据字节数组以及宽高和格式信息创建位图对象。步幅:相邻行间隔字节数; |
图形取图 | GdipCreateBitmapFromGraphics | 图形取图(宽,高,图形,@位图) | 基于图形设备对象,宽度和高度创建位图对象。 |
图面取图 | GdipCreateBitmapFromDirectDrawSurface | 图面取图(驱动图面对象,@位图) | 基于图像对象,宽度和高度创建位图对象。 |
结构取图 | GdipCreateBitmapFromGdiDib | 结构取图(结构,数组,@位图) | 基于位图信息结构和像素数据数组创建位图对象。 |
位图取图 | GdipCreateBitmapFromHBITMAP | 位图取图(句柄,色板,@位图) | 基于图形设备接口位图的句柄和GDI调色板的句柄创建位图对象。 |
位图绘图 | GdipCreateHBITMAPFromBitmap | 位图绘图(位图,@句柄,背景色) | 从此位图对象创建Windows图形设备接口(GDI)位图句柄。 |
图标取图 | GdipCreateBitmapFromHICON | 图标取图(句柄,@位图) | 根据图标创建位图对象。 |
图标绘图 | GdipCreateHICONFromBitmap | 图标绘图(位图,@句柄) | 从此位图对象创建一个图标。 |
资源取图 | GdipCreateBitmapFromResource | 资源取图(实例,资源,@位图) | 基于应用程序或动态链接库(DLL)实例句柄和位图资源的名称创建位图对象。 |
裁剪位图 | GdipCloneBitmapArea | 裁剪位图(小数 左,顶,宽,高,格式,源图,@位图) | 通过复制该位图的一部分来创建新的位图对象。图像像素格式。左顶宽高为小数 |
裁剪图像 | GdipCloneBitmapAreal | 裁剪图像(左,顶,宽,高,格式,源图,@位图) | 通过复制该位图的一部分来创建新的位图对象。图像像素格式。左顶宽高为整数 |
位图取色 | GdipBitmapGetPixel | 位图取色(位图,X,Y,@颜色) | 获取此位图中指定像素的颜色。 |
位图改色 | GdipBitmapSetPixel | 位图改色(位图,X,Y,颜色) | 设置此位图中指定像素的颜色。 |
位图锁定 | GdipBitmapLockBits | 位图锁定(位图,矩形,标志,格式,数据) | 锁定此位图的矩形部分,并提供可用于以指定格式读取或写入像素数据的临时缓冲区。标志 |
位图解锁 | GdipBitmapUnlockBits | 位图解锁(位图,数据) | 解锁此位图之前由 位图锁定 锁定的此位图的一部分。 |
位图尺寸 | GdipBitmapSetResolution | 位图尺寸(位图,小数 X,小数 Y) | 设置此位图对象的水平和垂直分辨率大小。(以点/英寸为单位) |
位图改色 | GdipBitmapSetPixel | 位图改色(位图,X,Y,颜色) | 设置此位图中指定像素的颜色。 |
图转格式 | GdipBitmapConvertFormat | 图转格式(位图,像素,抖动,色板类型,色板组,透明度) | 位图中的原始像素数据将替换为新的像素格式数据。像素格式,抖动类型,色板类型,色板数组类 |
初始色板 | GdipInitializePalette | 初始色板(@色板组,色板类型,颜色数,是否透明,位图) | 初始化标准、最佳或自定义调色板。色板数组类,色板类型 |
位图效果 | GdipBitmapApplyEffect | 位图效果(位图,效果,矩形,是否辅助,辅助数据,数据大小) | 通过应用指定的效果来更改此位图对象。 |
建效果图 | GdipBitmapCreateApplyEffect | 建效果图(位图,数量,效果,矩形,@新矩形 ,@新图,是否辅助,辅助数据,数据大小) | 通过将指定的效果应用于现有位图对象来创建新的位图对象。 |
取直方图 | GdipBitmapGetHistogram | 取直方图(位图,直方格式,元素数,数组0,数组1,数组2,数组3) | 为此位图对象的指定颜色通道返回一个或多个直方图。直方图格式 |
直方数目 | GdipBitmapGetHistogramSize | 直方数目(直方格式,@元素数) | 返回在调用 取直方图 函数之前必须分配的数组中元素的数目。直方图格式 |
创建效果 | GdipCreateEffect | 创建效果(类标识,@效果) | 通过类标识GUID创建效果对象。 |
改效果值 | GdipSetEffectParameters | 改效果值(效果,数量,参数组) | 设置此效果对象的参数组数值。 |
取效果值 | GdipGetEffectParameters | 取效果值(效果,数量,参数组) | 设置此位图中指定像素的颜色。 |
内测控制 | GdipTestControl | 内测控制(控制,@参数) | 指定图像处理行为中的更改。控制:0=强制双线性(参数为真且非临近插值=惰性双线性), 1=非ICM(参数为真忽略ICM配置文件),2=取版本号(参数接收) |
创建存图 | GdipCreateCachedBitmap | 创建存图(位图,图形,@存图) | 基于位图对象和图形设备对象创建缓存位图对象。 |
删除存图 | GdipDeleteCachedBitmap | 删除存图(存图) | 清理缓存位图对象使用的资源。 |
绘制存图 | GdipDrawCachedBitmap | 绘制存图(图形,存图,X,Y) | 绘制存储在 缓存位图 对象中的图像。 |
位图数据类
中文名字 | 英文名称 | 长度 | 作用解释 |
位图数据类 | BitmapData | 24 | 包含了位图数据相关信息的结构 |
位图数据类——成员表 | |||
---|---|---|---|
宽度 | Width | 整数 | 位图对象的像素宽度 |
高度 | Height | 整数 | 位图对象的像素高度 |
步长 | stride | 整数 | 位图对象的跨距宽度(也称为扫描宽度) |
像素 | PixelFormat | 整数 | 位图对象的像素信息格式 |
扫描 | scan0 | 整数 | 位图对象第一像素数据的地址 |
预留 | Reserved | 整数 | 保留。 请勿使用 |
色板数组类
中文名字 | 英文名称 | 长度 | 作用解释 |
色板数组类 | ColorPalette | 12+ | 包含了位图数据相关信息的结构 |
色板数组类——成员表 | |||
---|---|---|---|
标志 | Flags | 整数 | 标准调色板格式标志的组合。 |
数量 | Count | 整数 | 数组中的元素数。 |
数组 | Entries[1] | 整数 | ARGB 颜色数组。自定义长度 |
标准调色板格式标志-PaletteType标识多种标准调色板格式。
英文名称 | 数值 | 作用 |
PaletteTypeCustom | 0 | 调用方提供的任意自定义调色板。 |
PaletteTypeOptimal | 1 | 最适合特定位图的调色板。 若要创建最佳调色板,请将 PaletteTypeOptimal、调色板中所需的颜色数以及 位图 对象的地址传递给 初始色板 方法。 |
PaletteTypeFixedBW | 2 | 具有两种颜色的调色板。 此调色板类型适用于每个像素存储 1 位的位图。 |
PaletteTypeFixedHalftone8 | 3 | 基于两个强度的调色板,每个强度 (红色、绿色和蓝色通道的关闭或完全) 。 还包含系统调色板的 16 种颜色。 由于红色、绿色和蓝色的所有 8 个开/关组合已在系统调色板中,因此此调色板与系统调色板相同。 此调色板类型适用于每个像素存储 4 位的位图。 |
PaletteTypeFixedHalftone27 | 4 | 基于红色、绿色和蓝色通道的三种强度的调色板。 还包含系统调色板的 16 种颜色。 16 种系统调色板颜色中有 8 种是红、绿、蓝三种三强度组合,因此调色板中的颜色总数为 35。 如果调色板还包含透明颜色,则颜色总数为 36。 |
PaletteTypeFixedHalftone64 | 5 | 基于红色、绿色和蓝色通道的四种强度的调色板。 还包含系统调色板的 16 种颜色。 16 种系统调色板颜色中有 8 种是红色、绿色和蓝色的 64 种四强度组合,因此调色板中的颜色总数为 72。 如果调色板还包含透明颜色,则颜色总数为 73。 |
PaletteTypeFixedHalftone125 | 6 | 基于红色、绿色和蓝色通道的五种强度的调色板。 还包含系统调色板的 16 种颜色。 16 种系统调色板颜色中有 8 种是红色、绿色和蓝色的 125 种五强度组合,因此调色板中的颜色总数为 133。 如果调色板还包含透明颜色,则颜色总数为 134。 |
PaletteTypeFixedHalftone216 | 7 | 基于红色、绿色和蓝色通道的六种强度的调色板。 还包含系统调色板的 16 种颜色。 16 种系统调色板颜色中有 8 种是红色、绿色和蓝色的 216 种六强度组合,因此调色板中的颜色总数为 224。 如果调色板还包含透明颜色,则颜色总数为 225。 此调色板有时称为 Windows 半色调调色板或 Web 调色板。 |
PaletteTypeFixedHalftone252 | 8 | 基于 6 个红色强度、7 个绿色强度和 6 个蓝色强度的调色板。 不包括系统调色板。 颜色总数为 252。 如果调色板还包含透明颜色,则颜色总数为 253。 |
PaletteTypeFixedHalftone256 | 9 | 基于 8 种红色强度、8 种绿色强度和 4 种蓝色强度的调色板。 不包括系统调色板。 颜色总数为 256。 如果此调色板中包含透明颜色,则必须替换 RGB 组合之一。 |
中文名称 | 英文名称 | 数值 | 作用 |
像素1位索引 | PixelFormat1bppIndexed | $30101 | 指定格式为每像素 1 位,已编制索引。 |
像素4位索引 | PixelFormat4bppIndexed | $30402 | 指定格式为每像素 4 位而且已创建索引。 |
像素8位索引 | PixelFormat8bppIndexed | $30803 | 指定格式为每像素 8 位而且已创建索引。 |
像素16位灰度 | PixelFormat16bppGreyScale | $101004 | 指定格式为每像素 16 位灰度。 |
像素16位均色 | PixelFormat16bppRGB555 | $21005 | 指定格式为每像素 16 位;红色、绿色和蓝色分量各使用 5 位。 剩余的 1 位未使用。 |
像素16位偏绿 | PixelFormat16bppRGB565 | $21006 | 指定格式为每像素 16 位;红色分量使用 5 位,绿色分量使用 6 位,蓝色分量使用 5 位。 |
像素16位透明 | PixelFormat16bppARGB1555 | $61007 | 指定格式为每像素 16 位;1 位用于 alpha 分量,5 位分别用于红色、绿色和蓝色分量。 |
像素24位均色 | PixelFormat24bppRGB | $21808 | 指定格式为每像素 24 位;红色、绿色和蓝色分量各使用 8 位。 |
像素32位均色 | PixelFormat32bppRGB | $22009 | 指定格式为每像素 32 位;红色、绿色和蓝色分量各使用 8 位。 剩余的 8 位未使用。 |
像素32位透明 | PixelFormat32bppARGB | $26200A | 指定格式为每像素 32 位;alpha、红色、绿色和蓝色分量各使用 8 位。 |
像素32位左乘 | PixelFormat32bppPARGB | $E200B | 指定格式为每像素 32 位;alpha、红色、绿色和蓝色分量各使用 8 位。 根据 alpha 分量,对红色、绿色和蓝色分量进行自左乘。 |
像素48位均色 | PixelFormat48bppRGB | $10300C | 指定格式为每像素 48 位;红色、绿色和蓝色分量各使用 16 位。 |
像素64位透明 | PixelFormat64bppARGB | $34400D | 指定格式为每像素 64 位;alpha、红色、绿色和蓝色分量各使用 16 位。 |
像素64位左乘 | PixelFormat64bppPARGB | $1C400E | 指定格式为每像素 64 位;alpha、红色、绿色和蓝色分量各使用 16 位。 根据 alpha 分量,对红色、绿色和蓝色分量进行自左乘。 |
位图锁定标志-传递给 位图锁定 函数的 标志 参数的标志。
英文名称 | 数值 | 作用 |
ImageLockModeRead | 0x0001 | 指定锁定图像的一部分以便读取。 |
ImageLockModeWrite | 0x0002 | 指定锁定图像的一部分以便写入。 |
ImageLockModeUserInputBuf | 0x0004 | 指定由用户分配读取或写入像素数据时使用的缓冲区。如果设置了此标志则 数据 参数为输入,否则为输出 |
位图抖动类型标志-标识转换位图时用于抖变的可用算法。DitherType
英文名称 | 数值 | 作用 |
DitherTypeNone | 0 | 未执行抖振。 源位图中的像素映射到由 Bitmap::ConvertFormat 方法的调色板参数指定的调色板中最近的颜色。 此算法可以与任何调色板一起使用。 如果 调色板参数指定的调色板 没有 PaletteType 枚举中列出的标准固定格式之一,请将 PaletteTypeCustom 传递给 palettetype 参数。 |
DitherTypeSolid | 1 | 未执行抖振。 源位图中的像素映射到由 Bitmap::ConvertFormat 方法的调色板参数指定的调色板中最近的颜色。 此算法可以与任何调色板一起使用。 如果 调色板参数指定的调色板 没有 PaletteType 枚举中列出的标准固定格式之一,请将 PaletteTypeCustom 传递给 palettetype 参数。 |
DitherTypeOrdered4x4 | 2 | 可以使用此算法根据其中一个标准固定调色板中的颜色执行抖动。 还可以使用此算法将位图转换为没有调色板的每像素 16 位格式。 |
DitherTypeOrdered8x8 | 3 | 使用其中一个标准固定调色板中的颜色执行抖动。 |
DitherTypeOrdered16x16 | 4 | 使用其中一个标准固定调色板中的颜色执行抖动。 |
DitherTypeSpiral4x4 | 5 | 使用其中一个标准固定调色板中的颜色执行抖动。 |
DitherTypeSpiral8x8 | 6 | 使用其中一个标准固定调色板中的颜色执行抖动。 |
DitherTypeDualSpiral4x4 | 7 | 使用其中一个标准固定调色板中的颜色执行抖动。 |
DitherTypeDualSpiral8x8 | 8 | 使用其中一个标准固定调色板中的颜色执行抖动。 |
DitherTypeErrorDiffusion | 9 | 抖动是基于 图转格式函数的调色板参数指定的调色板执行的。 此算法可以与任何调色板一起使用。 如果 调色板参数指定的调色板 没有 PaletteType 枚举中列出的标准固定格式之一,请将 PaletteTypeCustom 传递给 palettetype 参数。 |
DitherTypeMax | 10 | TBD |
直方图格式标志-HistogramFormat指定表示位图颜色通道的直方图的数量和类型。
英文名称 | 数值 | 作用 |
HistogramFormatARGB | 0 | 指定 取直方图 函数返回四个直方图:透明、红色、绿色和蓝色通道各一个直方图。 透明 通道直方图写入 取直方图 函数的 数组0 参数指向的缓冲区。 红色通道直方图将写入 数组1 参数指向的缓冲区。 绿色通道直方图将写入 数组2 参数指向的缓冲区。 蓝色通道直方图写入 数组3 参数指向的缓冲区。 |
HistogramFormatPARGB | 1 | 指定 取直方图 函数返回四个直方图:透明、红色、绿色和蓝色通道各一个直方图。 创建直方图之前,红色、绿色和蓝色通道分别乘以 透明 通道。 当颜色通道乘以 透明 通道时,位图不会永久更改;该乘法仅用于创建直方图。 透明 通道直方图写入 取直方图 函数的 数组0 参数指向的缓冲区。 红色通道直方图将写入 数组1 参数指向的缓冲区。 绿色通道直方图将写入 数组2 参数指向的缓冲区。 蓝色通道直方图写入 数组3 参数指向的缓冲区。 |
HistogramFormatRGB | 2 | 指定 取直方图 函数返回三个直方图:红色、绿色和蓝色通道各一个直方图。 红色通道直方图写入 取直方图 函数的 数组0 参数指向的缓冲区。 绿色通道直方图将写入 数组1 参数指向的缓冲区。 蓝色通道直方图将写入 数组2 参数指向的缓冲区。 数组3 参数必须设置为 0。 |
HistogramFormatGray | 3 | 指定将每个像素转换为 0 到 255 范围内的灰度值,然后根据这些灰度值返回一个直方图。 位图不会因转换为灰度值而永久更改;计算这些值只是为了创建直方图。 灰度直方图写入 取直方图 函数的 数组0 参数指向的缓冲区。 数组1、数组2 和 数组3 参数必须设置为 0。 |
HistogramFormatB | 4 | 指定 取直方图 函数返回蓝色通道的直方图。 蓝色通道直方图写入 取直方图 函数的 数组0 参数指向的缓冲区。 数组1、数组2 和 数组3 参数必须设置为 0。 |
HistogramFormatG | 5 | 指定 取直方图 函数返回绿色通道的直方图。 绿色通道直方图将写入 取直方图 函数的 数组0 参数指向的缓冲区。 数组1、数组2 和 数组3 参数必须设置为 0。 |
HistogramFormatR | 6 | 指定 取直方图 函数返回红色通道的直方图。 红色通道直方图写入 取直方图 函数的 数组0 参数指向的缓冲区。 数组1、数组2 和 数组3 参数必须设置为 0。 |
HistogramFormatA | 7 | 指定 取直方图 函数返回 透明 通道的直方图。 透明 通道直方图写入 取直方图 函数的 数组0 参数指向的缓冲区。 数组1、数组2 和 数组3 参数必须设置为 0。 |