VC 窗体透明的实现

威尼斯的泪---666 2013-06-06 04:06:12
VC提供了SetLayeredWindowAttributes来实现窗体的透明,其中可以关键色透明,可以LWA_ALPHA透明也可以两者同时。
我希望的效果不是关键色透明,是LWA_ALPHA透明,可是又不想窗体中的内容透明,如何处理?
当窗体设置了LWA_ALPHA透明时,窗体会根据设置的透明度值整体的透明。
...全文
196 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2013-06-07
  • 打赏
  • 举报
回复
5楼才是专家。
sumos 2013-06-07
  • 打赏
  • 举报
回复
void OnPaint() { CPaintDC (this); CMemDC mem; 在mem上绘制; UpdateLayeredWindow;(将mem拷贝到dest dc) } 使用Invalidate刷新,此时会触发OnPaint,你需要做的就是在OnPaint完成所有绘制
  • 打赏
  • 举报
回复
引用 5 楼 zhoujielunzhimi 的回复:
lz,你需要百度一下 UpdateLayeredWindow
大侠,UpdateLayeredWindow我也用过,如果是固定的想要实现一个透明窗体(窗体中可以包含一些不透明的内容)倒可以,可是如果想实现一个透明的窗体可以在上面动态的绘制各种线段(同时没有锯齿)的效果可以? 难道不断的UpdateLayeredWindow?变化的背景图片谁提供?
  • 打赏
  • 举报
回复
引用 4 楼 zhao4zhong1 的回复:
自绘透明窗体?
大侠,不是自绘透明窗体。 实现思路:将子窗体SetLayeredWindowAttributes设置为关键色透明,这时候这个子窗体完全透明,然后使用GDI+向窗体上绘制线段轨迹(当然透明的窗体接收不到鼠标消息,通过HOOK鼠标消息发送给这个透明的子窗体)。这样除了绘制的线段轨迹透明外(线段的颜色和关键色肯定要不一样,要不也透明了)窗体背景是透明的。 这就会出现我上面说的GDI+绘制线段可以设置反锯齿,可是这时反锯齿绘制的效果在线段的周边就会有关键色的痕迹。 其实就想实现一个透明的窗体可以在上面动态的绘制各种线段(同时没有锯齿)
sumos 2013-06-07
  • 打赏
  • 举报
回复
lz,你需要百度一下 UpdateLayeredWindow
赵4老师 2013-06-07
  • 打赏
  • 举报
回复
自绘透明窗体?
  • 打赏
  • 举报
回复
用GDI+来实现窗口透明的。 其实就是希望实现窗体透明,在窗体上绘制的线条不透明。 1.如果使用关键色透明,可以做到窗体透明,线条不透明。可是这样绘制线段时使用的GDI+的反锯齿,就会在线段周边有反锯齿处理的特殊色痕迹 2.使用窗口透明,线段也透明了。 想要实现的效果:窗体透明,窗体中绘制的线段不透明,还能进行平滑或者反锯齿效果(去掉锯齿)。
赵4老师 2013-06-07
  • 打赏
  • 举报
回复
引用 10 楼 zhoujielunzhimi 的回复:
我已经写了一个例子: http://download.csdn.net/detail/zhoujielunzhimi/5538917
下载学习去喽!
sumos 2013-06-07
  • 打赏
  • 举报
回复
赵4老师 2013-06-06
  • 打赏
  • 举报
回复
WPF ?
赵4老师 2013-06-06
  • 打赏
  • 举报
回复
GDI+ DirectX

64,683

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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