CRect rect;
GetClientRect( &rect );
Bitmap *bmp = ::new Bitmap( rect.Width(), rect.Height() );
Graphics *graph= Graphics::FromImage( bmp );
Image img2(L"img\\client.png");
TextureBrush brush2(&img2, WrapModeTile );
graph->FillRectangle(&brush2, RectF(0.0f, 0.0f, REAL(rect.right), REAL(rect.bottom)));
Graphics g(dc.m_hDC);
g.DrawImage( bmp, 0,0 );
::delete bmp;
其中 client.png是一张半透明的PNG图片,但是贴在背景上,不能使背景半透明,请问大侠指点下。
或者如何利用GDI+ 实现背景半透明
7 个解决方案
#1
需要WS_EX_LAYERED样式,分层窗口.然后UpdateLayeredWindow
可参考: 模仿酷狗7(Kugou7)界面源码 http://blog.csdn.net/CometNet/archive/2011/06/22/6561912.aspx
可参考: 模仿酷狗7(Kugou7)界面源码 http://blog.csdn.net/CometNet/archive/2011/06/22/6561912.aspx
#2
楼主 你想说 是你的窗口不能透明 还是说贴上的图片不能透明?
#3
我把半透明的图片,贴在对话框上,但是图片不能透明,就是没有实现对话框的半透明效果。
#4
意思就是说你要对话框半透明吧
可以看看1楼的东东 用PNG图片实现 窗体就是图片的效果 做的不错的
如果单纯让对话框透明 用SetLayeredWindowAttributes()
#6
我个人感觉这个代码还存在小小的BUG,我当时研究了下,鼠标点击窗口移动的时候,这个时候上下左右的4个子窗体还没有绘制完,所以想等鼠标移到窗体上 等窗体完全绘制后,在移动。个人见解而已,希望大家指点.
#7
确实存在该BUG,不过我当时也只是尝试一下,并没有计划继续编写.就留给大家去完善吧.
#1
需要WS_EX_LAYERED样式,分层窗口.然后UpdateLayeredWindow
可参考: 模仿酷狗7(Kugou7)界面源码 http://blog.csdn.net/CometNet/archive/2011/06/22/6561912.aspx
可参考: 模仿酷狗7(Kugou7)界面源码 http://blog.csdn.net/CometNet/archive/2011/06/22/6561912.aspx
#2
楼主 你想说 是你的窗口不能透明 还是说贴上的图片不能透明?
#3
我把半透明的图片,贴在对话框上,但是图片不能透明,就是没有实现对话框的半透明效果。
#4
意思就是说你要对话框半透明吧
可以看看1楼的东东 用PNG图片实现 窗体就是图片的效果 做的不错的
如果单纯让对话框透明 用SetLayeredWindowAttributes()
#5
要想让窗口透明需要指定WS_EX_LAYERED风格
http://www.vckbase.com/document/viewdoc/?id=1745梒
http://www.vckbase.com/document/viewdoc/?id=1745梒
#6
我个人感觉这个代码还存在小小的BUG,我当时研究了下,鼠标点击窗口移动的时候,这个时候上下左右的4个子窗体还没有绘制完,所以想等鼠标移到窗体上 等窗体完全绘制后,在移动。个人见解而已,希望大家指点.
#7
确实存在该BUG,不过我当时也只是尝试一下,并没有计划继续编写.就留给大家去完善吧.