读书笔记--MFC Windows程序设计(二)

Windows通过在适配器硬件调色板编制标准的供选颜色来处理调色板化的设备.这就是所谓的"静态颜色". 在256色适配器中,剩下的236颜色在GDI对象中,通常称为逻辑调色板

创建逻辑调色板: CPalette palette; palette.CreateHalftonePalette(pDC);

如果传递给CreateHalftonePalette的设备句柄为NULL,就可以创建与输出设备无关的256色半色调色板.但是不能用CPalette:: CreateHaletonePalette,因为该类函数具有有效性检测.所以使用 CPalette palette; palette.Attach(::CreateHalftonePalatte(NULL));

在调色板创建以后,可以使用CPalette::GetPaletteEntries检索单个调色板输入项或使用CPalette::SetPaletteEntries修改它们 还可以使用CPalette::ResizePalette调整调色板的大小 CDC::RealizePalette通过申请调色板管理器将逻辑调色板中的颜色映射到系统调色板上

创建COLORREF值有3个宏,分别是RGB,PALETTEINDEX和PALETTERGB 如果希望GDI使用所有调色板颜色,则使用PALETTERGB,如果忽略调色板给系统调色板添加的颜色而只使用静态颜色则使用RGB. PALETTEINDEX生成的COLORREF指定了逻辑调色板而不是RGB颜色值的索引号

WM_QUERYNEWPALETTE和WM_PALETTECHANGED消息 当顶层窗口的子窗口接收到输入焦点时,就会给顶层窗口发送一个WM_QUERYNEWPALETTE消息.当调色板的实现导致系统调色板改动时,就给系统中顶层窗口发送WM_PALETTECHANGED消息

在运行过程中可以确定逻辑调色板是否可以改善颜色输出,即系统颜色是否符合要求的方法 CClienDC dc(this); BOOL bUsePalette=FALSE; if( dc.GetDeviceCaps(RASTERCAPS)&RC_PALETTE ) {  bUsePalette=TRUE; }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值