位图图像操作基础(一)

本文详细介绍了调色板操作的基本概念和技术实现,包括LOGPALETTE和PALETTEENTRY结构定义、HPALETTE与CPalette对象之间的转换方法、实现调色板操作的步骤以及处理调色板消息的方法。

调色板操作

调色板操作类:CPalette

创建调色板函数 BOOL CreatePalette(LPLOGPALETTE lpLogPalette)

 

LOGPALETTE 结构

typedef struct tagLOGPALETTE {

  WORD           palVersion; // 版本号,应指定为0x300

  WORD           palNumEntries; // 调色板中的表项数

  PALETTEENTRY  palPalEntry[1]; // 调色板表项数组

} LOGPALETTE;

 

PALETTEENTRY 结构

typedef struct tagPALETTEENTRY {

  BYTE peRed;

  BYTE peGreen;

  BYTE peBlue;

  BYTE peFlags;

} PALETTEENTRY;

 

HPALETTECPalette 对象互换

HPALETTECPalette 对象相互转换用CPalette::FromHandle CPalette::GetSafeHandle

 

实现调色板操作

第一步:CDC::SelectPalette选入调色板

第二步:CDC::ReleasePalette 实现调色板

 

三个调色板消息

1WM_QUERYNEWPALETTE 通知窗口它将收到输入焦点,给它一次机会实现其自身的逻辑调色板。

2WM_PALETTECHANGED 通知窗口系统调色板已被其他窗口改变。

3WM_PALETTECHANGING通知窗口系统调色板将被其他窗口改变。

 

DDB(Device Dependent Bitmap) 设备相关位图

DIB(Device Independent Bitmap) 设备无关位图

 

GetPaletteEntries 获取指定调色板中的实体数,返回调色板中的颜色数

UINT GetPaletteEntries(

  (in)HPALETTE hpal,        // 指向调色板的句柄

  (in)UINT iStartIndex,     // 从第几个开始接收

  (in)UINT nEntries,        // 接收多少个

  (out)LPPALETTEENTRY lppe   // 接收颜色的数组

);

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值