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
的详细信息,请参阅图形对象。
继承层次结构
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::StretchBlt 或 StretchDIBits 函数之前,应选择 CreateHalftonePalette 成员函数返回的逻辑半色调调色板并将其实现到设备上下文中。
有关 CreateHalftonePalette
和 StretchDIBits
的详细信息,请参阅 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