CPalette 类

封装一个 Windows 调色板。

语法

class CPalette : public CGdiObject

成员

公共构造函数

名称 描述
CPalette::CPalette 构造一个不附加 Windows 调色板的 CPalette 对象。 必须先使用初始化成员函数之一初始化 CPalette 对象,然后才能使用它。

公共方法

名称 描述
CPalette::AnimatePalette 替换由 CPalette 对象标识的逻辑调色板中的条目。 应用程序不必更新其工作区,因为 Windows 会立即将新条目映射到系统调色板中。
CPalette::CreateHalftonePalette 为设备上下文创建半色调调色板并将其附加到 CPalette 对象。
CPalette::CreatePalette 创建 Windows 调色板并将其附加到 CPalette 对象。
CPalette::FromHandle 为 Windows 调色板对象指定句柄时,返回指向 CPalette 对象的指针。
CPalette::GetEntryCount 检索逻辑调色板中的调色板条目数。
CPalette::GetNearestPaletteIndex 返回逻辑调色板中与颜色值最匹配的条目的索引。
CPalette::GetPaletteEntries 检索逻辑调色板中的一系列调色板条目。
CPalette::ResizePalette CPalette 对象指定的逻辑调色板的大小更改为指定的条目数。
CPalette::SetPaletteEntries 在逻辑调色板的一系列条目中设置 RGB 颜色值和标志。

公共运算符

“属性” 描述
CPalette::operator HPALETTE 返回附加到 CPalette 的 HPALETTE。

备注

调色板提供应用程序和颜色输出设备(例如显示设备)之间的接口。 该接口允许应用程序充分利用输出设备的颜色功能,而不会严重干扰其他应用程序显示的颜色。 Windows 使用应用程序的逻辑调色板(所需颜色的列表)和系统调色板(定义可用颜色)来确定使用的颜色。

CPalette 对象提供用于操作对象引用的调色板的成员函数。 构造一个 CPalette 对象并使用它的成员函数来创建实际的调色板、一个图形设备接口 (GDI) 对象,以及操作其条目和其他属性。

有关使用 CPalette 的详细信息,请参阅图形对象

继承层次结构

CObject

CGdiObject

CPalette

要求

标头:afxwin.h

CPalette::AnimatePalette

替换附加到 CPalette 对象的逻辑调色板中的条目。

void AnimatePalette(
    UINT nStartIndex,
    UINT nNumEntries,
    LPPALETTEENTRY lpPaletteColors);

参数

nStartIndex
指定调色板中要设置动画的第一个条目。

nNumEntries
指定调色板中要设置动画的条目数。

lpPaletteColors
指向 PALETTEENTRY 结构数组的第一个成员,以替换由 nStartIndex 和 nNumEntries 标识的调色板条目。

注解

当应用程序调用 AnimatePalette 时,它不必更新其工作区,因为 Windows 会立即将新条目映射到系统调色板中。

AnimatePalette 函数只会更改在附加到 CPalette 对象的 LOGPALETTE 结构的相应 palPaletteEntry 成员中设置了 PC_RESERVED 标志的条目。 有关此结构的详细信息,请参阅 Windows SDK 中的 LOGPALETTE。

CPalette::CPalette

构造 CPalette 对象。

CPalette();

备注

在调用 CreatePalette 附加面板之前,该对象没有附加调色板。

CPalette::CreateHalftonePalette

为设备上下文创建一个半色调调色板。

BOOL CreateHalftonePalette(CDC* pDC);

参数

pDC
标识设备上下文。

返回值

如果该函数成功,则为非 0;否则为 0。

备注

当设备上下文的拉伸模式设置为 HALFTONE 时,应用程序应创建半色调调色板。 在调用 CDC::StretchBltStretchDIBits 函数之前,应选择 CreateHalftonePalette 成员函数返回的逻辑半色调调色板并将其实现到设备上下文中。

有关 CreateHalftonePaletteStretchDIBits 的详细信息,请参阅 Windows SDK。

CPalette::CreatePalette

通过创建 Windows 逻辑调色板并将其附加到 CPalette 对象来初始化 CPalette 对象。

BOOL CreatePalette(LPLOGPALETTE lpLogPalette);

参数

lpLogPalette
指向包含有关逻辑调色板中颜色信息的 LOGPALETTE 结构。

返回值

如果成功,则不为 0;否则为 0。

备注

有关 LOGPALETTE 结构的详细信息,请参阅 Windows SDK。

CPalette::FromHandle

为 Windows 调色板对象指定句柄时,返回指向 CPalette 对象的指针。

static CPalette* PASCAL FromHandle(HPALETTE hPalette);

参数

hPalette
Windows GDI 调色板的句柄。

返回值

如果成功,则为指向 CPalette 对象的指针;否则为 NULL。

注解

如果 CPalette 对象尚未附加到 Windows 调色板,则会创建并附加一个临时 CPalette 对象。 此临时 CPalette 对象仅在应用程序下次在其事件循环中有空闲时间之前有效,届时将删除所有临时图形对象。 换言之,临时对象仅在处理一个窗口消息期间有效。

CPalette::GetEntryCount

调用此成员函数以检索给定逻辑调色板中的条目数。

int GetEntryCount();

返回值

逻辑调色板中的条目数。

CPalette::GetNearestPaletteIndex

返回逻辑调色板中与指定颜色值最匹配的条目的索引。

UINT GetNearestPaletteIndex(COLORREF crColor) const;

参数

crColor
指定要匹配的颜色。

返回值

逻辑调色板中条目的索引。 该条目包含与指定颜色最接近的颜色。

CPalette::GetPaletteEntries

检索逻辑调色板中的一系列调色板条目。

UINT GetPaletteEntries(
    UINT nStartIndex,
    UINT nNumEntries,
    LPPALETTEENTRY lpPaletteColors) const;

参数

nStartIndex
指定要检索的逻辑调色板中的第一个条目。

nNumEntries
指定要检索的逻辑调色板中的条目数。

lpPaletteColors
指向一组 PALETTEENTRY 数据结构以接收调色板条目。 该数组必须包含至少与 nNumEntries 指定的一样多的数据结构。

返回值

从逻辑调色板检索到的条目数;如果函数失败,则为 0。

CPalette::operator HPALETTE

使用此运算符获取 CPalette 对象的附加 Windows GDI 句柄。

operator HPALETTE() const;

返回值

如果成功,则为由 CPalette 对象表示的 Windows GDI 对象的句柄;否则为 NULL。

注解

此运算符是强制转换运算符,它支持直接使用 HPALETTE 对象。

有关使用图形对象的详细信息,请参阅 Windows SDK 中的图形对象一文。

CPalette::ResizePalette

将附加到 CPalette 对象的逻辑调色板的大小更改为 nNumEntries 指定的条目数。

BOOL ResizePalette(UINT nNumEntries);

参数

nNumEntries
指定重设大小后调色板中的条目数。

返回值

如果调色板成功重设大小,则为非零;否则为 0。

备注

如果应用程序调用 ResizePalette 来减小调色板的大小,则调整后的调色板中剩余的条目不会改变。 如果应用程序调用 ResizePalette 来放大调色板,则附加的调色板条目设置为黑色(红色、绿色和蓝色的值都为 0),并且所有附加条目的标志都设置为 0。

有关 Windows API ResizePalette 的详细信息,请参阅 Windows SDK 中的 ResizePalette

CPalette::SetPaletteEntries

在逻辑调色板的一系列条目中设置 RGB 颜色值和标志。

UINT SetPaletteEntries(
    UINT nStartIndex,
    UINT nNumEntries,
    LPPALETTEENTRY lpPaletteColors);

参数

nStartIndex
指定要设置的逻辑调色板中的第一个条目。

nNumEntries
指定要设置的逻辑调色板中的条目数。

lpPaletteColors
指向一组 PALETTEENTRY 数据结构以接收调色板条目。 该数组必须包含至少与 nNumEntries 指定的一样多的数据结构。

返回值

逻辑调色板中设置的条目数;如果函数失败,则为 0。

备注

如果在应用程序调用 SetPaletteEntries 时将逻辑调色板选中到设备上下文中,则更改将在应用程序调用 CDC::RealizePalette 之前生效。

有关详细信息,请参阅 Windows SDK 中的 PALETTEENTRY

另请参阅

MFC 示例 DIBLOOK
CGdiObject 类
层次结构图
CPalette::GetPaletteEntries
CPalette::SetPaletteEntries