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 结 构 数 组 中 的 第 一 个 成 员 , 此 结 构 用 于 替 换由 nStartIndexnNumEntries 所 标 识 的 调 色 板 项 。

说 明

此 函 数 替 换 附 着 在 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