社区
界面
帖子详情
透明窗体问题
windrey
2008-05-20 10:26:38
要实现在一个透明窗体上绘制图片!我把窗体设为透明,在窗体上绘图,运行时整个窗体透明了,图片也看不见,请问如何实现窗体透明,绘的图不透明!
...全文
169
11
打赏
收藏
透明窗体问题
要实现在一个透明窗体上绘制图片!我把窗体设为透明,在窗体上绘图,运行时整个窗体透明了,图片也看不见,请问如何实现窗体透明,绘的图不透明!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
你妹的特盗不
2009-08-14
打赏
举报
回复
我这有个例子程序,给我你的mail,我发给你~希望对你有帮助 ~
chogimoga
2009-08-14
打赏
举报
回复
QQ音乐 歌词 透明效果! 应该就是8楼的做法!
piaopiaohu123
2009-08-14
打赏
举报
回复
可以用PNG掩图的方式,使用ALPHA通道的PNG透明图片,然后使用updatelayeredwindow(),可以将窗口作成类似全透明效果(如果PNG差不多是透明效果的时候),但是不是全透明..全透明的窗口,鼠标肯定会漏过去...缺点是貌似只能显示一幅图,如果你想自己捕捉鼠标画线或者图形之类的,我目前也还没找到可行的办法.
给个建议是,把窗口设为透明之后,鼠标漏过去了,可以在他的下层窗口捕捉消息,然后使用二次缓存,设置定时器,不停的重绘试试...只是个想法,不知道行的通不
「已注销」
2009-08-14
打赏
举报
回复
兄弟,你的意思是:绘制一个图片形的窗口吧,就是说要绘制的窗口模型跟你的图片一样吧。我觉得你应该换一种思路,其实就是绘制不规则窗口的问题。下面提供一些代码,希望能帮助你解决问题:
1.图片的形状显示的窗体
BOOL CPictureDlg::OnInitDialog()
{
// TODO: Add extra initialization here
CDC* pDC;
CDC memDC;
CBitmap cBitmap;
COLORREF col;
CRect rect;
int x,y;
CRgn Rgn,rgn;
pDC = GetDC();
GetWindowRect(&rect);
cBitmap.LoadBitmap(IDB_BITMAP1);
memDC.CreateCompatibleDC(pDC);
memDC.SelectObject(&cBitmap);
Rgn.CreateRectRgn(0,0,rect.Width(),rect.Height());
for(x=0;x <rect.Width();x++)
{
for(y=0;y <rect.Height();y++)
{
col=memDC.GetPixel(x,y);
if(col==RGB(255,255,255))
{
rgn.CreateRectRgn(x,y,x+1,y+1);
Rgn.CombineRgn(&Rgn,&rgn,RGN_XOR);
rgn.DeleteObject();
}
}
}
SetWindowRgn((HRGN)Rgn,true);
ReleaseDC(pDC);
}
BOOL CPictureDlg::OnEraseBkgnd(CDC* pDC)
{
// TODO: Add your message handler code here and/or call default
CRect rect;
GetWindowRect(&rect);
CDC memDC;
CBitmap cBitmap;
//将背景位图加到设备场景中
cBitmap.LoadBitmap(IDB_BITMAP1);
memDC.CreateCompatibleDC(pDC);
memDC.SelectObject(&cBitmap);
//将背景位图显示出来
pDC->BitBlt(0, 0, rect.Width(), rect.Height(), &memDC, 0, 0, SRCCOPY);
return TRUE;
// return CDialog::OnEraseBkgnd(pDC);
}
piaopiaohu123
2009-08-13
打赏
举报
回复
使用UpdateLayeredWindow的话,图片的颜色不会跟着变淡吗?
lhc_picture
2009-08-13
打赏
举报
回复
UpddateLayeredWindow用这个函数试试,把图画在它参数的HDC中,这样窗口的其他部分透明了,而画在HDC中的图还能被更新出来。
lhc_picture
2009-08-13
打赏
举报
回复
[Quote=引用 6 楼 piaopiaohu123 的回复:]
使用UpdateLayeredWindow的话,图片的颜色不会跟着变淡吗?
[/Quote]
不会,它会更新它自己的HDC中画的图,窗口的不会对它产生影响。
wyxz555
2009-08-02
打赏
举报
回复
[Quote=引用 3 楼 vocanicy 的回复:]
SetLayeredWindowAttributes的LWA_COLORKEY的效果和LWA_ALPHA完全不同
设置了LWA_COLORKEY颜色的窗口部分是完全消失了,效果和SetWindowRgn一样
另外SetLayeredWindowAttributes对子窗口无效
因此如果楼主真的要实现这个效果,只能将图放在一个POPUP的窗口中,
然后通过重载父窗口的OnMove消息处理函数跟着主窗口一起移动来模拟子窗口。
[/Quote]
这种方式不太好,如果用这种方式,其它窗体就不能用了
rageliu
2008-05-20
打赏
举报
回复
可以用设置key color的方式透明
vocanicy
2008-05-20
打赏
举报
回复
SetLayeredWindowAttributes的LWA_COLORKEY的效果和LWA_ALPHA完全不同
设置了LWA_COLORKEY颜色的窗口部分是完全消失了,效果和SetWindowRgn一样
另外SetLayeredWindowAttributes对子窗口无效
因此如果楼主真的要实现这个效果,只能将图放在一个POPUP的窗口中,
然后通过重载父窗口的OnMove消息处理函数跟着主窗口一起移动来模拟子窗口。
windrey
2008-05-20
打赏
举报
回复
具体一点,不太明白!
vb
窗体
特效
透明
窗体
vb
透明
窗体
特效源码
透明
窗体
透明
窗体
透明
窗体
透明
窗体
画图 C# WINFORM
我的解决方案为两层
透明
窗体
重叠,一层
透明
窗体
showForm显示图像(TransparencyKey因为鼠标穿透,但字迹显示清楚正常),用另一层
窗体
drawForm做绘图轨迹(Opacity鼠标不穿透,可以不必显示图像),两个都为
透明
窗体
,...
vb
透明
窗体
下载下载
透明
窗体
透明
窗体
透明
窗体
透明
窗体
透明
窗体
透明
窗体
透明
窗体
透明
窗体
透明
窗体
透明
窗体
透明
窗体
MFC实现
透明
窗体
MFC实现
透明
窗体
,
窗体
美观实用,代码简练
透明
窗体
覆盖在其他
窗体
上画图
原本是想在显示图像的地方直接画需要的图形,最后发现显示图像的地方在...代码中实现了
透明
窗体
,进行了对主
窗体
透明
覆盖,在
透明
窗体
上画图。 在
透明
窗体
范围内,鼠标点哪,就在哪画十字星,主
窗体
更新不形象画的图。
界面
15,979
社区成员
115,897
社区内容
发帖
与我相关
我的任务
界面
VC/MFC 界面
复制链接
扫一扫
分享
社区描述
VC/MFC 界面
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章