c# 窗体半透明 控件不透明

THFG 2013-04-21 05:33:26
如题,,求怎样实现,,,先说明一下我不想要用两个form实现的,,也不要用form的op什么属性是实现的,,我想要用gdi+和api实现的。。。
...全文
592 29 打赏 收藏 转发到动态 举报
写回复
用AI写文章
29 条回复
切换为时间正序
请发表友善的回复…
发表回复
THFG 2013-04-24
  • 打赏
  • 举报
回复
引用 28 楼 dylike 的回复:
UpdateLayeredWindow后,界面将不再响应paint,所以也就不再绘制,看不到了,DrawBP或者StartDraw会自动设置其为UpdateLayeredWindow样式,不需要再添加UpdateLayeredWindow样式代码。
原来如此,,怪不得看不到了,,,谢谢这么详细的解答
dylike 2013-04-24
  • 打赏
  • 举报
回复
UpdateLayeredWindow后,界面将不再响应paint,所以也就不再绘制,看不到了,DrawBP或者StartDraw会自动设置其为UpdateLayeredWindow样式,不需要再添加UpdateLayeredWindow样式代码。
dylike 2013-04-24
  • 打赏
  • 举报
回复
如果是使用DYD.DrawBP,则不绘制原控件,因为参数只是一张bitmap,而如果使用DYD.StartDraw,则会绘制原控件。
THFG 2013-04-24
  • 打赏
  • 举报
回复
引用 22 楼 woshixiaohongmao 的回复:
引用 11 楼 dylike 的回复:支持2000/XP/2003/VISTA/2008/7/8/9/10 一句代码: Dyd.StartDraw,不过这个有点耗CPU,新版本的还没发布,我还在改进。 那个原理应该是updateLayerWindow吧! 其实我觉得可能是刷新频率太高了,所以导致效率低,应该需要重绘时再刷新界面! 下面是我做的和你的对……
是不是用了UpdateLayeredWindow就不能显示子控件了,,,要自己画控件了
小红帽A_A 2013-04-23
  • 打赏
  • 举报
回复
引用 11 楼 dylike 的回复:
支持2000/XP/2003/VISTA/2008/7/8/9/10
一句代码:
Dyd.StartDraw,不过这个有点耗CPU,新版本的还没发布,我还在改进。


那个原理应该是updateLayerWindow吧!

其实我觉得可能是刷新频率太高了,所以导致效率低,应该需要重绘时再刷新界面!

下面是我做的和你的对比!我的只有在列表滚动时才比较耗CPU!

THFG 2013-04-23
  • 打赏
  • 举报
回复
引用 20 楼 machong8183 的回复:
现在用wpf也能简单的实现些
主要是我现在没学过wpf,,,而且我程序写一半了,,再改wpf困难了,,,不过话说现在wpf对于图形的支持貌似很好啊,,至少比form好多了
水猿兵团五哥 2013-04-23
  • 打赏
  • 举报
回复
现在用wpf也能简单的实现些
THFG 2013-04-23
  • 打赏
  • 举报
回复
引用 16 楼 dylike 的回复:
你可以尝试一下这个DLL,自己写的,所以不用担心会有病毒木马问题。
我去试试
水猿兵团五哥 2013-04-23
  • 打赏
  • 举报
回复
引用 16 楼 dylike 的回复:
你可以尝试一下这个DLL,自己写的,所以不用担心会有病毒木马问题。
膜拜下DYLIKE 刚刚我看到2L的话就想笑了,说的太绝对了吧 看来他不知道CSDN曾经有DYlike
  • 打赏
  • 举报
回复
越来越追求花俏了
dylike 2013-04-23
  • 打赏
  • 举报
回复
你可以尝试一下这个DLL,自己写的,所以不用担心会有病毒木马问题。
THFG 2013-04-23
  • 打赏
  • 举报
回复
引用 14 楼 dylike 的回复:
原理就是类似DirctX,独立的界面绘制渲染引擎,使得能对所有元素进行统一绘制到单一的窗体上.
这样啊,,,貌似很复杂的样子,,,我现在用dwm加上对jpg图像添加一个透明通道来实现半透明,,但是效果非常之卡,,,没什么好的解决办法
dylike 2013-04-23
  • 打赏
  • 举报
回复
里面有句DYD.DrawBP是不绘制原控件,这样就不是实时绘制的,只在需要时绘制,情况就和你的一样了。
dylike 2013-04-23
  • 打赏
  • 举报
回复
嗯,因为我的是为了兼容原FORM控件,如果不显示原有控件的话,也没必要实时绘制了。后来我又改进了一下,缩小绘制区域,使得支持“脏区”处理,当然,通常做updatelayeredwindow的都不怎么用原有控件,都是自定义图像,所以耗CPU也主要是在要支持原控件的情况下。
dylike 2013-04-22
  • 打赏
  • 举报
回复
原理就是类似DirctX,独立的界面绘制渲染引擎,使得能对所有元素进行统一绘制到单一的窗体上.
huozhiheng 2013-04-22
  • 打赏
  • 举报
回复
这个用来美化界面十分好呢
THFG 2013-04-22
  • 打赏
  • 举报
回复
引用 10 楼 dylike 的回复:
DYD.DLL单窗体实现层窗体显示控件
能透露一下大概的实现思路么
dylike 2013-04-22
  • 打赏
  • 举报
回复
支持2000/XP/2003/VISTA/2008/7/8/9/10 一句代码: Dyd.StartDraw,不过这个有点耗CPU,新版本的还没发布,我还在改进。
dylike 2013-04-22
  • 打赏
  • 举报
回复
threenewbee 2013-04-21
  • 打赏
  • 举报
回复
http://www.itbobo.com/c-winform-realize-win7-aero-by-by-the-the-matte-effect.html
加载更多回复(8)

110,499

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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