求高手,用png图片做异形窗口

breezes2008 2010-01-12 10:42:07
我知道有个Cimage类可操作PNG,但网上说的方法不明白
给出关键代码和说明
先谢谢大家了
...全文
222 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
av007007 2010-01-12
  • 打赏
  • 举报
回复
up
jameshooo 2010-01-12
  • 打赏
  • 举报
回复
1、设置窗口的扩展风格,添加 WS_EX_LAYERED
2、用 CImage 加载 PNG 图片
3、把PNG图片AlphaBlend到一个内存DC
4、调用 UpdateLayeredWindow 把这个内存DC交给桌面管理就行了
lllyyy2403 2010-01-12
  • 打赏
  • 举报
回复
不知道LZ说的PNG是什么图片。要是以BMP图片的形状显示窗体却也不难。直接用CBITMAP装入图片,然后檫除背景即可。
sjdev 2010-01-12
  • 打赏
  • 举报
回复
什么地方不明白?
zoulie 2010-01-12
  • 打赏
  • 举报
回复
http://www.qqread.com/vc/k720947020.html
然后在OnEraseBkgnd里面再绘制
hurryboylqs 2010-01-12
  • 打赏
  • 举报
回复
CImage将图片Load进来后 扫描下需要异型的区域,然后CombinRgn
SetWindowRgn
chenyu2202863 2010-01-12
  • 打赏
  • 举报
回复
去看吧,别忘了给我分

http://www.codeproject.com/KB/GDI-plus/Style_Toolkit.aspx

http://www.codeproject.com/KB/dialog/PerfectTranlucentDlg.aspx(国人写的)
菜鸟二号 2010-01-12
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 breezes2008 的回复:]
引用 3 楼 jameshooo 的回复:
1、设置窗口的扩展风格,添加 WS_EX_LAYERED
2、用 CImage 加载 PNG 图片
3、把PNG图片AlphaBlend到一个内存DC


第3步不懂,怎么做
[/Quote]

Graphics graphics(hdc);
Image image(L"D:\\appletree.png");
graphics.DrawImage(&image,0,0,image.GetWidth(),image.GetHeight());




4、调用 UpdateLayeredWindow 把这个内存DC交给桌面管理就行了这个函数一般没定义,而且使用后,用户就不能操作了,建议使用
#define WS_EX_LAYERED 0x00080000
#define LWA_COLORKEY 0x00000001
#define LWA_ALPHA 0x00000002
#define ULW_COLORKEY 0x00000001
typedef BOOL (FAR WINAPI *LAYERFUNC)(HWND,COLORREF,BYTE,DWORD);
BOOL SetLayeredWindowAttributes(HWND hwnd,COLORREF crKey,BYTE bAlpha,DWORD dwFlags)
{
LAYERFUNC SetLayer;
HMODULE hmod = LoadLibrary("user32.dll");
SetLayer=(LAYERFUNC)GetProcAddress(hmod,"SetLayeredWindowAttributes");
BOOL bReturn = SetLayer(hwnd,crKey,bAlpha,dwFlags);
FreeLibrary(hmod);
return bReturn;
}




以上为定义部分,
显示窗口(showwindow)后使用SetLayeredWindowAttributes,即可,用法自己搜吧
breezes2008 2010-01-12
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 jameshooo 的回复:]
1、设置窗口的扩展风格,添加 WS_EX_LAYERED
2、用 CImage 加载 PNG 图片
3、把PNG图片AlphaBlend到一个内存DC
4、调用 UpdateLayeredWindow 把这个内存DC交给桌面管理就行了
[/Quote]
第3步不懂,怎么做

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧