duilib进阶教程 -- 总结 (17)
整个教程的代码下载:http://download.csdn.net/detail/qq316293804/6502207
(由于duilib进阶教程主要介绍界面,所以这个教程只给出界面相关的代码,完整代码请进《仿迅雷播放器教程》)
进阶教程汇总:
duilib进阶教程 -- 在MFC中使用duilib (1)
duilib的学习到此就差不多啦,现在简短总结下:
一、稳定性:
目前已发现并解决了四五个bug,不过都属于一下子就能解决的bug,并且都是功能性方面的bug,并不会导致崩溃,已有很多公司用于产品开发,经过了长期的考验,因此稳定性方面已经很不错了。
二、功能性:
Alberl在做这个播放器的时候,也不敢确定能不能完全实现迅雷那样的效果,现在看来,完全不是问题!
三、易用性:
看到Alberl这么快就做出了迅雷播放器,还用怀疑易用性么?
四、学习难度:
Alberl既不是做播放器的,也不是做界面的,只是业余爱好而已,还能一边学习一边写教程,并且在Alberl写了这些教程之后,入门已经没有难点啦,你觉得duilib能有多难学?
五、不方便的地方:
因为是模仿迅雷播放器,所以这里和迅雷BOLT做一点点对比。
图片资源都是从迅雷提取出来的,
duilib有以下几点不便:
1、Alberl做的最多的工作就是去计算source属性该填哪些值,因为一个按钮通常有四种状态的图标,而很多按钮的大小都不一样,所以这里对每个按钮都要计算其source属性,很不方便。
这里有一个简单的解决方案,加上属性 splitimage="true"则说明此图片需要被分成四个部分显示。规定图片的四个部分依次按normalimage、hotimage、pushedimage、focusimage排列,程序就自动计算每个图片的位置,就无需在XML填写source位置啦~
而且之后就算按钮大小变了,或者图片大小变了,都不需要改动XML。
2、其次就是图片默认被拉伸了,很显然,绝大部分图片是不需要被拉伸的,有些按钮的大小和图片的大小并不一样,虽然dest属性可以解决这个问题,但是也很不方便,所以默认不应该被拉伸,并且图片垂直水平都居中,如果想要拉伸,则指定scaleimage="true"。 这就方便多啦。
3、Slider控件的图片问题,进度条图片被放大到和整个控件的高度一样,这时的解决方案是,比如控件高度为20,图片高度为3,则需要把图片调成高度为20,其他17个高度都做成透明。如果控件高度调成40,那么图片又要调整。 所以可以加一个属性imageheight="3",这样Slider控件自动将图片垂直居中,或者无需指定imageheight属性,代码自动判断高度。
4、部分属性不全,比如编辑框有FocusBordColor,却没有HotBordColor,这样要实现迅雷那样的编辑框,只能指定一个HotImage属性,显然也不方便。还有很多Color属性都不全,就不一一指出了。
5、按钮状态切换时,只能指定一个图片,迅雷每个按钮除了切换hotimage以外,按钮的下面还有一个蓝色的光影,显然这个光影是可以重用的,说明迅雷的按钮切换时至少可以切换两张图片。并且那个光影可以显示在按钮外面,可以看到光影的宽度明显比按钮宽,甚至延长到了旁边的按钮下面。 这个改动可能涉及到核心,因此不建议去改,改一下图片就可以了。
不过以上几点都是很容易实现的,因此实际项目使用中,可以花几天时间把以上几点实现了,后面开发就更方便啦~
当然,这只是开发迅雷播放器中遇到的问题,开发其他项目可能会遇到其他问题。
由于Alberl只是业余人士,就不做这些改进了。
从实现效果来看,迅雷BOLT显然更成熟,更全面。但由于迅雷BOLT并不开源,而duilib也已经够用了,虽然提了这几点不便,但都是很容易解决的,也就说duilib已经非常方便了。
可以看到Alberl做的播放器和迅雷看看的相似度达到95%以上,再往细节里做一下就可以以假乱真啦~O(∩_∩)O~
Alberl在最开始也说了,选择从这个库开始研究,最主要的原因是因为很多大公司都用了它,所以Alberl在不知道哪个库好用的情况下,就跟着大牛走啦~O(∩_∩)O~
相信在看了Alberl的教程以及作品之后,对duilib应该心中有数了吧。
最后,祝小伙伴们学习愉快~O(∩_∩)O~
duilib进阶教程 -- 总结 (17)的更多相关文章
- duilib进阶教程 -- Container控件的bug (14)
在<duilib进阶教程 -- TreeView控件的bug (9)>里,Alberl发现了两个bug,并解决了其中一个,现在教程已经接近尾声啦,所以Alberl就解决了另外一个bug. ...
- duilib进阶教程 -- 在MFC中使用duilib (1)
由于入门教程的反响还不错,因此Alberl就以直播的形式来写<进阶教程>啦,本教程的前提: 1.请先阅读<仿迅雷播放器教程> 2.要有一定的duilib基础,如果还没,请先阅读 ...
- duilib进阶教程 -- TreeView控件(6)
代码下载:http://download.csdn.net/detail/qq316293804/6483905 上一个教程中,界面已经和迅雷一模一样啦,大小和位置一个像素都不差哟,亏得Alberl调 ...
- duilib进阶教程 -- Container控件 (3)
前面两个教程的目的是教大家与MFC结合,那么从这篇起,将不再使用MFC,而使用纯win32项目,本文的所有知识已经在<duilib入门教程>里面讲过了,因此基础知识不再赘述. 代码下载:h ...
- duilib进阶教程 -- 各种控件的响应 (10)
到上一个教程为止,界面显示的代码就都介绍完啦,现在开始介绍控件的响应,其实在<2013 duilib入门简明教程 -- 事件处理和消息响应 (17)>里已经列出了duilib自己定义的所有 ...
- duilib进阶教程 -- 改进List控件 (16)
一.控件隐藏后,允许用代码操作所有行为. 在做播放器的时候,最常用的功能莫过于顺序播放.随机播放了,而当我们切换歌曲的时候,显然应该选中该歌曲,List的选中函数是SelectItem,但是调用此函数 ...
- duilib进阶教程 -- 设置资源路径 (15)
在前面的教程里,虽然图片都放到了skin文件夹里,但是XML却都在外面,当XML比较多时,就不太好看啦,如下图: 所以需要整理一下,将XML也放入skin文件夹,这样exe的目录就简洁多了: 将XML ...
- duilib进阶教程 -- 响应windows原生消息和自定义消息(13)
一.windows原生消息 同样,入门教程只是给出了响应windows原生消息的方法,并没给出例子,这里以自适应屏幕分辨率为例.迅雷播放器虽然可以在启动的时候自动调整窗口大小,但是当屏幕分辨率实时改变 ...
- duilib进阶教程 -- 在duilib中使用MFC (2)
好人做到底,送佛送到西.虽然上一篇教程已经说得很详细了,但Alberl还是再举一个例子.上一篇教程的主窗口是MFC的,所以这篇教程把主窗口换成duilib的~O(∩_∩)O~ 1.我们利用<20 ...
随机推荐
- php 通过变量 来调用函数
<?php function fun() { echo 'fun'; } $a = 'fun'; $a(); ?> 复制代码 上面的$a变量就是fun()函数,调用$a()和调用fun() ...
- 高频交易策略[z]
Market Order以最高速下市价单(market order)是买方最基本的策略 Looking for Price Discrepancies 这个就是高频统计套利(high frequenc ...
- windows 2008 server ftp 无法访问解决办法
安装一个WINDOWS自带的FTP服务器,整了接近一天的时间,按网上的教程,无论如何搭建.最终都是内部IP可以访问.外部IP无法访问. 1.防火墙全部关掉. 2.FTP所在目录给的是EVERYONE的 ...
- java生成base64编码的png
java代码: 引用包: import java.awt.image.BufferedImage; import java.io.ByteArrayOutputStream; import java. ...
- vb.net加密解密方法
1.vb.net加密解密方法 Private Function getLicenseDate() As String Dim b() As Byte Dim path As String = Serv ...
- Bing Map
To use map services in Windows 10 packages for this application, you need to acquire a token from th ...
- PHP中想过获取系统内置的所有常量吗?
print_r(get_defined_constants(true)); OK!这样就可以了,赶紧去试试吧
- C++ 无法将值写入注册表 HKEY_LOCAL_MACHINE\Sofeware\Microsoft\Windows\CurrentVersion\Run,以实现开机自启动应用程序。
C++ 无法将值写入注册表 HKEY_LOCAL_MACHINE\Sofeware\Microsoft\Windows\CurrentVersion\Run,以实现开机自启动应用程序.但可以写入到H ...
- Win系统查看系统的几个命令
1. 查看显卡或者显存信息 Win + R dxdiag 2. 查看显卡是独立显卡,或者集成显卡 查看计算机显卡的方法 第一种方法:查看主机连接显示器VGA线连接的接口. 如图:VGA连接线连接在主机 ...
- Magicodes.WeiChat——自定义knockoutjs template、component实现微信自定义菜单
本人一向比较喜欢折腾,玩了这么久的knockoutjs,总觉得不够劲,于是又开始准备折腾自己了. 最近在完善Magicodes.WeiChat微信开发框架时,发现之前做的自定义菜单这块太不给力了,而各 ...