MFC的GDI+及透明窗口UpdateLayeredWindow.doc

ID:57689185

大小:13.50 KB

页数:2页

时间:2020-09-01

MFC的GDI+及透明窗口UpdateLayeredWindow.doc_第1页
MFC的GDI+及透明窗口UpdateLayeredWindow.doc_第2页
资源描述:

《MFC的GDI+及透明窗口UpdateLayeredWindow.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、制作透明窗口,使用透明图片遇到的一个问题1:添加PNG资源失败.答:先添加PNG资源组,然后导入图片.2:显示成功加载资源,资源成功载入内存,但是加载到Image类的时候,返回空指针.答:可能是忘了初始化GDI+了.GDI+的所有功能使用之前必须先调用Gdiplusstartup()函数初始化好.3:在使用内存DC时,如果是在GDI下,我们使用bitblt函数,把内存缓存更新到目标缓存里如果是想制作透明窗口,则使用UpdateLayeredWindow函数.4:UpdateLayerdWindow函数功能异常强大UpdateLayeredWin

2、dow(m_hWnd,//:当前窗口的句柄hdcDlgDC,//:当前窗口的DC&ptWinPos,//:当前窗口在屏幕的左上角位置(相当于::SetWindowPos()函数)&sizeWindow,//:当前窗口在的宽度和高度m_hdcMemory,//:内存缓存DC&ptSrc,//:内存缓存的左上角坐标(可用于裁剪内存缓存)0,&m_Blend,//混合样式2);5:关于混合样式m_Blend.BlendOp=0;//theonlyBlendOpdefinedinWindows2000m_Blend.BlendFlags=0;//not

3、hingelseisspecial...m_Blend.AlphaFormat=1;//...m_Blend.SourceConstantAlpha=1~255;//:该选项控制着整个窗口的透明度.1为完全透明,255为完全不透明(即使窗口完全不透明,如果里面的图片有透明属性,仍能够透明)6:调用UpdateLayerdWindow之前,要给窗口加上0x80000样式.否则无效.DWORDdwExStyle=GetWindowLong(m_hWnd,GWL_EXSTYLE);if((dwExStyle&0x80000)!=0x80000)Set

4、WindowLong(m_hWnd,GWL_EXSTYLE,dwExStyle^0x80000);7:Guiplus::Graphics类提供了功能强大的DrawImage具体如何把一个Image类Draw到Graphics掌握的HDC上,查看guiplus帮助文档8:GDI和GDI+不变的是HDC,他们都要把东西画到一个DC上.所以,初始化Guiplus::Graphics时,要给其绑定一个DC,一般是绑定到内存dc上.Graphicsgraph(m_hdcMemory);除了加入了一些新的图像算法之外,GDI+和GDI的差别在于GDI:面向

5、句柄(HDC)编程GDI+面向对象编程.HDC是其的一个内部变量.

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
正文描述:

《MFC的GDI+及透明窗口UpdateLayeredWindow.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、制作透明窗口,使用透明图片遇到的一个问题1:添加PNG资源失败.答:先添加PNG资源组,然后导入图片.2:显示成功加载资源,资源成功载入内存,但是加载到Image类的时候,返回空指针.答:可能是忘了初始化GDI+了.GDI+的所有功能使用之前必须先调用Gdiplusstartup()函数初始化好.3:在使用内存DC时,如果是在GDI下,我们使用bitblt函数,把内存缓存更新到目标缓存里如果是想制作透明窗口,则使用UpdateLayeredWindow函数.4:UpdateLayerdWindow函数功能异常强大UpdateLayeredWin

2、dow(m_hWnd,//:当前窗口的句柄hdcDlgDC,//:当前窗口的DC&ptWinPos,//:当前窗口在屏幕的左上角位置(相当于::SetWindowPos()函数)&sizeWindow,//:当前窗口在的宽度和高度m_hdcMemory,//:内存缓存DC&ptSrc,//:内存缓存的左上角坐标(可用于裁剪内存缓存)0,&m_Blend,//混合样式2);5:关于混合样式m_Blend.BlendOp=0;//theonlyBlendOpdefinedinWindows2000m_Blend.BlendFlags=0;//not

3、hingelseisspecial...m_Blend.AlphaFormat=1;//...m_Blend.SourceConstantAlpha=1~255;//:该选项控制着整个窗口的透明度.1为完全透明,255为完全不透明(即使窗口完全不透明,如果里面的图片有透明属性,仍能够透明)6:调用UpdateLayerdWindow之前,要给窗口加上0x80000样式.否则无效.DWORDdwExStyle=GetWindowLong(m_hWnd,GWL_EXSTYLE);if((dwExStyle&0x80000)!=0x80000)Set

4、WindowLong(m_hWnd,GWL_EXSTYLE,dwExStyle^0x80000);7:Guiplus::Graphics类提供了功能强大的DrawImage具体如何把一个Image类Draw到Graphics掌握的HDC上,查看guiplus帮助文档8:GDI和GDI+不变的是HDC,他们都要把东西画到一个DC上.所以,初始化Guiplus::Graphics时,要给其绑定一个DC,一般是绑定到内存dc上.Graphicsgraph(m_hdcMemory);除了加入了一些新的图像算法之外,GDI+和GDI的差别在于GDI:面向

5、句柄(HDC)编程GDI+面向对象编程.HDC是其的一个内部变量.

显示全部收起
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭