Ala*_*lan 2 c++ winapi mfc gdi+ gdi
我正在创建一个非侵入式弹出窗口,以便在处理耗时的操作时通知用户.目前我通过调用设置其透明度,SetLayeredWindowAttributes这给了我一个合理的结果:
alt text http://img6.imageshack.us/img6/3144/transparentn.jpg
但是我希望文本和关闭按钮看起来不透明(用白色文字看起来不太正确)同时保持背景透明 - 有没有办法做到这一点?
小智 10
为了在分层窗口中执行"正确"alpha,您需要通过调用向窗口管理器提供PARGB位图UpdateLayeredWindow.
我所知道的实现这一目标的最简洁方法如下:
Bitmap使用PixelFormat32bppPARGB像素格式创建GDI + 对象.Graphics要在此Bitmap对象中绘制的对象.Graphics在步骤2中创建的对象.GetHBITMAP上的方法Bitmap来获取Windows HBITMAP.Bitmap对象.CreateCompatibleDC并从中选择HBITMAP步骤5.HBITMAP步骤5中创建的.此方法应该允许您控制绘制的所有内容的Alpha通道:对背景透明,对文本和按钮不透明.
此外,由于您要输出文本,我建议您调用SystemParametersInfo以获取默认的抗锯齿设置(SPI_GETFONTSMOOTHING),然后SetTextRenderingHint在Graphics对象上将抗锯齿类型设置为用户配置的相同类型,更好看.
| 归档时间: |
|
| 查看次数: |
3188 次 |
| 最近记录: |