仿新版360安全卫士主界面,附源码(基于稍作修改的duilib)

sssooonnnggg 2014-01-22 11:26:27
加精
主要修改了 duilib 中的 UIManager、UIDialogBuilder、UIRender 几个模块,加入了对分层窗口及窗口阴影的支持。
窗口阴影采用九宫格方法实现,这样窗口缩放时不影响窗口阴影的显示效果。






源码:
http://download.csdn.net/detail/sssooonnnggg/6875479
...全文
14011 109 打赏 收藏 转发到动态 举报
写回复
用AI写文章
109 条回复
切换为时间正序
请发表友善的回复…
发表回复
请叫我小强 2015-12-30
  • 打赏
  • 举报
回复
最近准备写安全卫士,感谢分享。
观辰 2015-06-16
  • 打赏
  • 举报
回复
MFC不好的人是不是必须先学MFC呢?
moyou0303 2015-05-05
  • 打赏
  • 举报
回复
非常感兴趣,学习一下
个人空间啊 2015-04-28
  • 打赏
  • 举报
回复
这个例子比较实用,如果再搞定Edit,ie等控件的显示问题就完美了
pengzhen19920907 2015-04-15
  • 打赏
  • 举报
回复
为什么楼主的没有错误???没有修改图片没有错误
zt18092377753 2015-01-25
  • 打赏
  • 举报
回复
太给力了,还是免费的。感谢楼主!
老顽童 2014-12-31
  • 打赏
  • 举报
回复
谢谢,虽然暂时没有搞VS
能哥 2014-08-18
  • 打赏
  • 举报
回复
引用 56 楼 DesignParten 的回复:
[quote=引用 55 楼 naturalbest 的回复:] [quote=引用 44 楼 DesignParten 的回复:] [quote=引用 28 楼 sssooonnnggg 的回复:] [quote=引用 27 楼 DesignParten 的回复:] [quote=引用 21 楼 sssooonnnggg 的回复:] [quote=引用 19 楼 DesignParten 的回复:] 阴影修改了哪些地方啊楼主
UIManager 中对 WM_PAINT 的处理和渲染窗口阴影的处理 添加了几个阴影相关的属性,在 UIDialogBuilder 中进行了处理 如果窗口时分层的,窗口上的文字会变为透明的,因此修改了 UIRender 中的 DrawText 函数[/quote] 你说的几个地方我都改了,界面是这样的,楼主我哪里出问题了啊,用的新版duilib。界面上除了图片的地方,其他地方都是透明的,点一下实际点到后面的窗口了 请明示,谢谢。 [/quote] 背景没用图片直接用的背景色吗? 那 UIRender 中的 DrawColor 也要重新实现 UIRender 中我只重新实现了 DrawText,对应的新函数为 DrawTextUnderLayered , 可以参考一下 原因是这样的,采用 Layered 分层窗口之后,直接在 hdc 上调用 drawText , drawRect 等 api 是画不上去的,只会形成一个透明的区域。需要新建一个位图,在新位图上画,然后调用 AlphaBlend 将位图渲染到 hdc 上,具体例子参考 DrawTextUnderLayered 函数。目前我只实现了 layered 窗口对应的 drawText 函数,其他函数实现起来应该是类似的 [/quote] 用了背景图片,skin文件夹没改过。 不晓得哪里出的问题。 WM_PAINT分支只执行了if( m_bAlphaBackground){...}里面的内容,后面的都不需要了吧,我加断点,后面的都没执行到。我再看看,不行就放弃了~~~呵呵 [/quote] 测试了一下午,这个问题终于解决。 原来问题出在UIRender.cpp的DrawImage()函数中,SetStretchBltMode()函数指定位图的拉伸模式,楼主的代码指定的是COLORONCOLOR,原先svn代码中指定的是HALFTONE,个人猜测是UpdateLayeredWindow()函数的调用会重新计算需要渲染的图片像素信息,所以就不能保留原先的像素值。 希望有大牛可以接着详细说明下。 [/quote] 兄弟好牛叉! 谢谢。[/quote] 不知道有没有人测试Edit控件,点Edit控件时会点到后面的窗体上,透气儿。。。
yyf092220 2014-07-04
  • 打赏
  • 举报
回复
楼主能说明一下,如何修改DrawColor中以便显示文字呢
____Zhang 2014-04-20
  • 打赏
  • 举报
回复
透明窗口下 edit控件没有光标
KerneIX 2014-03-18
  • 打赏
  • 举报
回复
如果你用的是别人写的UI库,我只能说, 即使做出来也没啥子技术含量, 至少我们公司这边不使用第三方UI库
shuzhongxunyu 2014-03-18
  • 打赏
  • 举报
回复
感谢楼主的分享啊
KerneIX 2014-03-17
  • 打赏
  • 举报
回复
我这个是仿QQ2013 看图, 阴影边框 支持 jpg, bmp, gif , png ,ico
就是 纯C 加 GDI+ 实现的
海贼王大妈 2014-03-16
  • 打赏
  • 举报
回复
引用 28 楼 sssooonnnggg 的回复:
[quote=引用 27 楼 DesignParten 的回复:] [quote=引用 21 楼 sssooonnnggg 的回复:] [quote=引用 19 楼 DesignParten 的回复:] 阴影修改了哪些地方啊楼主
UIManager 中对 WM_PAINT 的处理和渲染窗口阴影的处理 添加了几个阴影相关的属性,在 UIDialogBuilder 中进行了处理 如果窗口时分层的,窗口上的文字会变为透明的,因此修改了 UIRender 中的 DrawText 函数[/quote] 你说的几个地方我都改了,界面是这样的,楼主我哪里出问题了啊,用的新版duilib。界面上除了图片的地方,其他地方都是透明的,点一下实际点到后面的窗口了 请明示,谢谢。 [/quote] 背景没用图片直接用的背景色吗? 那 UIRender 中的 DrawColor 也要重新实现 UIRender 中我只重新实现了 DrawText,对应的新函数为 DrawTextUnderLayered , 可以参考一下 原因是这样的,采用 Layered 分层窗口之后,直接在 hdc 上调用 drawText , drawRect 等 api 是画不上去的,只会形成一个透明的区域。需要新建一个位图,在新位图上画,然后调用 AlphaBlend 将位图渲染到 hdc 上,具体例子参考 DrawTextUnderLayered 函数。目前我只实现了 layered 窗口对应的 drawText 函数,其他函数实现起来应该是类似的 [/quote] 这样貌似会导致文字的对齐样式align失效啊,楼主有好的解决方法么?一个个的用textpadding不爽啊,
alexmayer 2014-03-10
  • 打赏
  • 举报
回复
感谢愿意分享的朋友!
海贼王大妈 2014-03-10
  • 打赏
  • 举报
回复
引用 92 楼 u013320991 的回复:
GDI+ API 及多层 可以轻松实现
不装B会死,是吧
米奇修 2014-02-14
  • 打赏
  • 举报
回复
JHSeng 2014-02-12
  • 打赏
  • 举报
回复
劝楼主去写个361干翻360吧……
KerneIX 2014-02-12
  • 打赏
  • 举报
回复
GDI+ API 及多层 可以轻松实现
zh852 2014-02-12
  • 打赏
  • 举报
回复
不错 美工占了很大的比重 好像现在流行一个UI设计师 和体验师之类的工作 该是跟界面设计有关
加载更多回复(87)

15,979

社区成员

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

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