CPalette
CPalette 类 封 装 了 W indows 的 调 色 板 。 调 色 板 在 一 个 应 用 程 序 和 一 个 颜 色 输 出设 备 ( 比 如 一 个 显 示 设 备 ) 之 间 提 供 了 一 个 接 口 。 这 个 接 口 允 许 此 应 用 程 序 充分 使 用 输 出 设 备 的 颜 色 处 理 能 力 , 而 不 会 干 涉 其 它 应 用 程 序 显 示 的 颜 色 。
W indows 使 用 应 用 程 序 的 逻 辑 调 色 板( 一 个 所 需 颜 色 的 列 表 )和 系 统 调 色 板(定义 了 可 以 使 用 的 颜 色 ) 来 确 定 使 用 的 颜 色 。
一 个 CPalette 对 象 提 供 了 用 于 操 作 对 象 所 涉 及 的 调 色 板 的 成 员 函 数 。 构 造 一 个
CPalette 对 象 , 并 使 用 它 的 成 员 函 数 来 创 建 实 际 的 调 色 板 , 一 个 图 形 设 备 接 口
( GD I) 对 象 , 并 操 作 他 的 项 和 其 它 的 属 性 。
#include <afxwin.h>
请 参 阅 CPalette::GetPaletteEntries, CPalette::SetPaletteEntries
CPalette 类 成 员
Construction
Cpalette 构 造 一 个 CPalette 对 象 , 没 有 被 附 着 的 Windows 调 色 板 。 你 必 须 用 一 个 初 始 化 成 员 函 数 来 初 始 化这 个 CPalette 对 象 后 才 能 使 用 它
Init ialization
CreatePalette 创 建 一 个 W indows 调 色 板 并 将 它 附 着 在 CPalette
对 象 上
CreareHalftonePalette 创 建 一 个 用 于 设 备 环 境 的 半 调 调 色 板 , 并 将 它 附着 在 此 CPalette 对 象 上
Operations
FromHandle 当 给 予 一 个 W indows 调 色 板 对 象 时 返 回 一 个 指 向一 个 CPalette 对 象 的 指 针
AnimatePalette 替 换 由 CPalette 对 象 标 识 的 逻 辑 调 色 板 中 的 项 。
应 用 程 序 不 需 要 更 新 它 的 客 户 区 , 因 为 W indows
会 立 即 将 新 的 项 映 射 到 系 统 调 色 板
GetNearestPaletteIndex 返 回 逻 辑 调 色 板 中 最 匹 配 某 个 颜 色 值 的 项 0 的 索
引
ResizePalette 将 CPalette 对 象 所 指 定 的 逻 辑 调 色 板 的 大 小 改 变
为 指 定 的 项 数
Attribute s GetEntryCount 获 取 一 个 逻 辑 调 色 板 中 的 调 色 板 项 数 目
GetPalette Entries 获 取 一 个 逻 辑 调 色 板 中 一 段 范 围 内 的 调 色 板 项
SetPaletteEntries 设 置 逻 辑 调 色 板 中 一 段 表 项 范 围 内 的 RGB 颜 色 值
和 标 志
Operator HPALETTE 返 回 附 着 在 CPalette 上的 HPALETTE
成 员 函 数
CPalette::AnimatePalette
void AnimatePalette( UINT nStartIndex , U INT nNumEntries , LPPALETTEENTRY lpPaletteColors );
参 数
nStartIndex
指 定 要 激 活 的 调 色 板 中 的 第 一 项 。
nNumEntries
指 定 要 激 活 的 调 色 板 中 的 项 数 。
lpPaletteColors
指 向 一 个 PALETTEENTRY 结 构 数 组 中 的 第 一 个 成 员 , 此 结 构 用 于 替 换由 nStartIndex 和 nNumEntries 所 标 识 的 调 色 板 项 。
说 明
此 函 数 替 换 附 着 在 CPalette 对 象 上 的 逻 辑 调 色 板 。 当 一 个 应 用 程 序 定 义AnimatePalette 时 , 它 不 用 更 新 它 的 客 户 区 , 因 为 W indows 会 立 即 将 新 项 映 射到 系 统 调 色 板 。
AnimatePalette 函 数 只 改 变 这 样 的 项 :在此 CPalette 对 象 所 连 接 的 LOGPALETTE 结 构 中 , 此 项 所 对 应 的 palPaletteEntry 成 员 中 设 置 了 PC _ RESERVED 标 志 的 调色 板 项 。 要 获 取 有 关 这 个 结 构 的 更 多 信 息 , 请 参 见 “ W in 32 SDK 程 序 员 参 考 ”
中 的 LOGPALETETTE 。
请 参 阅 CPalette::CreatePalette , ::AnimatePalette
CPalette::CPalette
CPalette();
说 明
构 造 一 个 CPalette 对 象 。 这 个 对 象 没 有 连 接 调 色 板 , 直 到 你 调 用 了 CreatePalette
来 将 一 个 调 色 板 连 接 到 此 对 象 上 。
请 参 阅 CPalette::CreatePalette
CPalette::CreateHalftonePalette
BOOL CreateHalftonePalette(CDC* pDC );
返 回 值
如 果 函 数 成 功 则 返 回 非 零 值 ; 否 则 返 回 0 。
参 数
pDC
标 识 设 备 环 境 。
说 明
为 设 备 环 境 创 建 一 个 半 调 的 调 色 板 。 当 设 备 环 境 的 拉 伸 方 式 被 设 置 为HALFTONE 时 , 应 用 程 序 应 该 创 建 半 调 调 色 板 。 在 调 用 CDC::StretchBlt 或 ::StretchDIBits 函 数 之 前 , 应 当 将 CreateHalftonePalette 成 员 函 数 所 返 回 的 逻辑 半 调 调 色 板 选 入 并 实 现 到 设 备 环 境 。
SDK 程 序 员 参 考 ” 。
请 参 阅 CDC::RealizePalette , CDC::SelectPalette , CDC::SetStretchBltMode,
:: CreateHalftonePalette , ::StretchDIBits
CPalette::CreatePalette
BOOL CreatePalette( LPLOGPALETTE lpLogPalette );
返 回 值
如 果 成 功 则 返 回 非 零 值 ; 否 则 返 回 0 。
参 数
lpLongPalette
信 息 。
说 明
通 过 创 建 一 个 W indows 逻 辑 调 色 板 并 将 它 连 接 到 CPalette 对 象 上 来 初 始 化 这 个
CPalette 对 象 。
要 获 取 更 多 关 于 LOGPALETTE 的 信 息 , 请 参 见 “ W in 32 SDK 程 序 员 参 考 ” 。
请 参 阅 ::CreatePalette , LOGPALETTE
CPalette::FromHandle
static CPalette* PASCAL FormHandle( HPALETTE hPalette );
返 回 值
如 果 成 功 则 返 回 一 个 指 向 CPalette 对 象 的 指 针 ; 否 则 返 回 NULL 。
参 数
hPalette
一个 Windows GDI 调 色 板 句 柄 。
说 明
当 给 予 一 个 W indows 调 色 板 对 象 时 ,该 函 数 返 回 指 向 一 个 CP a lette 对 象 的 指 针 。如 果 此 W indows 调 色 板 要 连 接 一 个 C P a lette 对 象 , 则 创 建 一 个 临 时 的 C P a lette 对 象 , 并 将 此 对 象 连 接 到 此 W indows 调 色 板 上 。 这 个 临 时 CP a lette 对 象 只 会 有效 到 下 次 应 用 程 序 的 事 件 循 环 中 有 空 闲 时 间 时 , 到 那 时 所 有 临 时 图 形 对 象 都 将被 删 除 。 也 就 是 说 , 临 时 对 象 仅 在 处 理 一 条 窗 口 消 息 的 期 间 有 效 。
CPalette::GetEntryCount
int GetEntryCount();
返 回 值
返 回 一 个 逻 辑 调 色 板 中 的 项 数 。
说 明
调 用 这 个 成 员 函 数 来 获 取 一 个 给 定 的 逻 辑 调 色 板 中 的 项 数 。
请 参 阅 C P a lette::GetPaletteEntries , CP a lette::SetPaletteEntries
CPalette::GetNearestPaletteIndex
UINT GetNearestPaletteIndex( COLORREF crColor ) const;
返 回 值
返 回 值 为 逻 辑 调 色 板 某 一 项 的 索 引 。 该 项 中 包 含 最 匹 配 指 定 颜 色 的 调 色 板 中 的颜 色 。
参 数
crColor
指 定 要 匹 配 的 颜 色 。
说 明
此 函 数 返 回 逻 辑 调 色 板 中 最 匹 配 指 定 颜 色 值 的 项 的 索 引 。
请 参 阅 ::GetNearestPaletteIndex
CPalette::GetPaletteEntries
UINT GetPaletteEntries( UINT nStartIndex, UINT nNumEntries, LPPALETTEENTRY lpPaletteColors ) const;
返 回 值
如 果 函 数 成 功 , 则 返 回 从 逻 辑 调 色 板 中 获 取 的 项 数 ; 否 则 , 返 回 0 。
参 数
nStartIndex
指 定 在 逻 辑 调 色 板 中 要 被 获 取 的 第 一 项 。
nNumEntries
指 定 在 逻 辑 调 色 板 中 要 获 取 的 项 数 。
lpPaletteColors
指 向 一 个 PALETTEENTRY 数 据 结 构 数 组 , 此 结 构 用 来 接 收 调 色 板 项 。
数 组 中 必 须 至 少 包 含 与 nNumEntries 所 指 定 的 项 数 一 样 多 的 数 据 结 构 。
说 明
此 函 数 返 回 逻 辑 调 色 板 中 一 定 范 围 内 的 调 色 板 项 。
请 参 阅 ::GetPaletteEntrie s, C P a lette::SetPaletteEntries
CPalette::operator HPALETTE
operator HPALETTE() const;
返 回 值
如 果 成 功 则 返 回 一 个 由 CPalette 对 象 表 示 的 W indows GDI 对 象 句 柄 ; 否 则 返 回
0 。
此 操 作 符 用 来 获 取 与 CPalette 对 象 连 接 的 Windows GDI 句 柄 。 此 操 作 符 是 一 个强 制 转 换 操 作 符 , 它 支 持 直 接 使 用 一 个 HPALETTE 对 象 。
要 获 取 更 多 关 于 使 用 图 形 对 象 的 信 息 , 请 参 见 “ Win32 SDK 程 序 员 参 考 ” 中 的文 章 “ 图 形 对 象 ” 。
CPalette::ResizePalette
BOOL ResizePalette( UINT nNumEntries );
返 回 值
如 果 成 功 地 改 变 了 调 色 板 的 大 小 , 则 返 回 非 零 值 ; 否 则 返 回 0 。
nNumEntries
指 定 调 色 板 在 改 变 大 小 后 的 项 数 。
说 明
此 函 数 将 一 个 连 接 于 CPalette 对 象 的 逻 辑 调 色 板 的 大 小 改 变 为 nNumEntries 所指 定 的 项 数 。 如 果 一 个 应 用 程 序 调 用 ResizePalette 来 减 小 一 个 调 色 板 的 大 小 , 则 保 留 在 改 变 大 小 后 的 调 色 板 中 的 项 是 没 有 变 化 的 。 如 果 应 用 程 序 调 用ResizePalette 来 增 大 调 色 板 的 大 小 , 则 增 加 的 调 色 板 项 被 设 置 为 黑 ( 即 红 、 绿 、蓝 的 值 均 为 0 ) , 并 且 所 有 增 加 项 的 标 志 均 为 0 。
要 获 取 更 多 关 于 W indows API ResizePalette 的 信 息 , 请 参 见 “ W in32 SDK 程序员 参 考 ” 中 的 ::ResizePalette 。
请 参 阅 ::ResizePalette
CPalette::SetPaletteEntries
UINT SetPaletteEntries( UINT nStartIndex , UINT nNumEntries , LPPALETTEENTRY lpPaletteColors );
返 回 值
如 果 成 功 则 返 回 在 逻 辑 调 色 板 中 设 置 的 项 数 ; 否 则 返 回 0 。
参 数
nStartIndex
指 定 在 逻 辑 调 色 板 中 要 设 置 的 第 一 项 。
nNumEntries
指 定 在 逻 辑 调 色 板 中 要 设 置 的 项 数 。
lpPaletteColors
指 向 一 个 用 来 接 收 调 色 板 项 的 PALETTEENTRY 数 据 结 构 数 组 。 该 数 组必 须 包 含 至 少 与 nNumEntries 所 指 定 项 数 一 样 多 的 数 据 结 构 。
说 明
此 函 数 用 来 设 置 一 个 逻 辑 调 色 板 中 一 定 范 围 内 的 项 的 RGB 颜 色 值 和 标 志 。
如 果 当 应 用 程 序 调 用 SetPaletteEntries 函 数 时 此 逻 辑 调 色 板 被 选 入 一 个 设 备 环 境中 , 则 该 调 用 所 做 的 变 化 在 应 用 程 序 调 用 CDC::RealizePalette 之 前 不 会 起 作 用 。
要 获 取 更 多 关 于 W indows PALETTEENTRY 结 构 的 信 息 , 请 参 见 “ W in32 SDK
程 序 员 参 考 ” 中 的 PALETTEENTRY 。
请 参 阅 CDC::RealizePalette , C P alette::GetPaletteEntries , ::SetPaletteEntries