当前位置:编程学习 > C#/ASP.NET >>

「玩一玩」手把手教学帖:跟我一起学控件,仿制最新版DevExpress里的小控件(持续更新)

--------------------编程问答-------------------- --------------------编程问答--------------------
引用
Quote:
Quote:
Quote:
Quote:

.

--------------------编程问答-------------------- 楼主 我觉得你该学习下WPF了。  WPF才是你发挥的舞台。  根本不用依靠什么第三方的dev控件。 不用自己痛苦的用GDI+绘制控件。   玩转样式,玩转模板, 玩转数据绑定, 玩转WPF  ,winform滚一边去去吧。   --------------------编程问答-------------------- 支持技术帖,以前用过它的报表库,比MS的水晶报表性能要好得多 --------------------编程问答--------------------
引用 3 楼 Pc498471249 的回复:
楼主 我觉得你该学习下WPF了。  WPF才是你发挥的舞台。  根本不用依靠什么第三方的dev控件。 不用自己痛苦的用GDI+绘制控件。   玩转样式,玩转模板, 玩转数据绑定, 玩转WPF  ,winform滚一边去去吧。  


轻浮狗头笑而不语 --------------------编程问答--------------------
引用 5 楼 conmajia 的回复:
Quote: 引用 3 楼 Pc498471249 的回复:

楼主 我觉得你该学习下WPF了。  WPF才是你发挥的舞台。  根本不用依靠什么第三方的dev控件。 不用自己痛苦的用GDI+绘制控件。   玩转样式,玩转模板, 玩转数据绑定, 玩转WPF  ,winform滚一边去去吧。  


轻浮狗头笑而不语


10分钟能走完的路程,  要用20分钟绕着走。  轻浮猪头笑而不语。  --------------------编程问答-------------------- 1 --------------------编程问答--------------------
引用 楼主 conmajia 的回复:
all by conmajia.

看到caozhy的《手把手教编程,不知道有没有人愿意参与》帖子,希望通过手把手教学,一方面提高教学效率,另一方面也排除掉了伸手党。出发点是不错的。
在论坛逛了差不多一年,觉得就论坛来说,还是新手居多。
我不靠编程吃饭,所以对掌握新知识没什么动力,会的东西看起来比较老旧。
尽管如此,还是希望能以我老旧的知识,给有需要的新手一点提示和参考。
有兴趣参与的,可以和我一起动手制作。
---------------------------
note: 这个帖子持续更新,不会一下子写完。
这个东西是很早前做着玩的。源代码我好像删掉了,只剩下博客里的截图。
因为我有点忘了,所以我也只有一边重新思考编程,一边写帖子。
不过有个好处就是时间比较长,我会详细把从0开始的整个分析、设计、实现的思路和全过程写出来。
另一个好处就是你也可以跟着我一步一步动手实战,可以自己思考整个过程,而不是一次下载完源代码然后像狗一样趴在屏幕上看。
当完成全部内容后,我再放上源代码。
--------------------------
下文涉及的内容,限于.NET 2.0,如果你常用的是WPF,我只能说仅供参考。
如果你问为什么不用WPF,我只能回答俩字儿:不会
---------------------------

扯了这么多,先来说说我打算做什么。
DevExpress是Developer Express的缩写,DevExpress是一家全球知名的控件开发公司。
DevExpress的控件有很强的实力,不仅功能丰富,应用简便,而且界面华丽,更可方便定制。
它就是“专业”的代名词。(至少会让你“看起来”很专业)

虽然它很牛逼,但我是买不起的。(不是搞软件的,买来没法产生效益)
在某次上网的时候,我发现DevExpress推出了最新版12.2(刚查了下,现在是13.1,但外观无变化)
它的网页上提供了一张截图:

看起来很酷很METRO对吧?萝卜青菜,各有所爱。我还是比较喜欢这种风格。
然后我就对这个部分比较感兴趣

两个表头。(仪表的表)
虽然这个据说是WPF做的,但很明显,我在WinForm里祭出GDI+也是可以实现,于是我就开始了仿制。
先把最终效果放出来

这是静态的,100%还原度,下面是动态操作演示。因为动画压缩了,所以有点不清晰。凑合着看吧

还是那句话,100%还原度。

--------
介绍先到这里,下面我会在回帖里从新建VisualStudio工程开始,讲解怎样通过一张截图,来分析、设计和实现(山寨)别人的产品(学习借鉴)。

note:回帖时间不固定


明明有更好的方式可以解决, 非要走歪路,走远路。 不好意思楼猪,我跟你思想截然不同。 有更好的东西自然会去选择更好的。 守旧不是明智的选择。  --------------------编程问答-------------------- 不管怎样,有这个心还是不错,支持一下 --------------------编程问答-------------------- 你是不是觉得winform很好玩?    那是因为你没有体会过WPF的强大之处。 
劝你静下来来潜心研究一下WPF ,再回头来写写这些所谓的第三方控件。    你会发现 winform真的太他妈傻逼了! --------------------编程问答--------------------
引用 10 楼 Pc498471249 的回复:
你是不是觉得winform很好玩?    那是因为你没有体会过WPF的强大之处。 
劝你静下来来潜心研究一下WPF ,再回头来写写这些所谓的第三方控件。    你会发现 winform真的太他妈傻逼了!
不解释。。码农无疑。。 --------------------编程问答--------------------
引用 9 楼 Chinajiyong 的回复:
不管怎样,有这个心还是不错,支持一下
恩。 好。。
可惜有傻逼看不懂我想表达的到底是什么。。码畜就是码畜,跳不出养它的圈。。。 --------------------编程问答-------------------- 问一个比较傻的问题。屏幕录像做成gif有没有高效的工具? --------------------编程问答--------------------
引用 13 楼 caozhy 的回复:
问一个比较傻的问题。屏幕录像做成gif有没有高效的工具?
CYY屏幕录像助手 --------------------编程问答-------------------- 支持,顶一个 --------------------编程问答-------------------- 你又回来了? --------------------编程问答-------------------- 虽然也能写个四不像的东西,但还是想看下LZ的淫技!留名等更新! --------------------编程问答-------------------- 授人以鱼.不如授之以渔.支持野比 --------------------编程问答--------------------     我觉得楼主想要表达一些原理性的东西,举个例子来说就是:一个非常漂亮控件是怎么设计,生产,制造出来的,而不是拘礼与一些技术形式如WPF,这点跟帖子一开始就说到的“caozhy的《手把手教编程,不知道有没有人愿意参与》,希望通过手把手教学,一方面提高教学效率,另一方面也排除掉了伸手党。出发点是不错的“  帖子的具体体现。可以说楼主的思想和初衷跟这篇帖子所表达的意思是大同小异的。
    还有我觉得楼主的出发点:就是想要给初学者多一些指导,让他们少走些弯路。而不是让初学者盲目的去追求一些什么什么wpf,什么什么语言多牛逼。
    其实这直接反应出一些童鞋在沟通上的问题,当然我也看过楼主之前写的一些帖子都很不错,对东西的描述非常清楚透彻,可以说我受教很多,也明白了一些疑惑的问题。 --------------------编程问答--------------------
引用 12 楼 conmajia 的回复:
Quote: 引用 9 楼 Chinajiyong 的回复:

不管怎样,有这个心还是不错,支持一下
恩。 好。。
可惜有傻逼看不懂我想表达的到底是什么。。码畜就是码畜,跳不出养它的圈。。。


支持一下楼主,还希望楼主心态平淡些,不要理会恶意回复,
我本来想批评一下个别人,可是当我把鼠标移到那个人的头像上的时候,就觉得没有必要了 --------------------编程问答-------------------- 这个贴子,真的找不到什么理由不顶,也不明白那些恶评的人怎么想的。。。
鄙视他们,好像自己很厉害一样。。。 --------------------编程问答-------------------- 除 --------------------编程问答-------------------- 支持一个。GDI+、 --------------------编程问答-------------------- 除 --------------------编程问答-------------------- 赞一个  --------------------编程问答-------------------- 支持,顶一个 --------------------编程问答-------------------- 感谢楼主分享 --------------------编程问答-------------------- 支持,毕竟是分享
还是好的
--------------------编程问答-------------------- 学习了,谢谢! --------------------编程问答-------------------- 支持楼主

--------------------编程问答-------------------- 问个问题 gdi+画出的圆有锯齿怎么吧?  开了anti锯齿也不行 --------------------编程问答-------------------- --------------------编程问答-------------------- 有些人一定要别人按照他们的意思去做,对这种人我只能说:
小学生回家写作业去吧 --------------------编程问答-------------------- 不错啊,我学习拉 --------------------编程问答-------------------- --------------------编程问答-------------------- 学习了,谢谢分享 --------------------编程问答-------------------- --------------------编程问答-------------------- 感觉略困。。轻松的周末。。

现在开始分析这两个表头

首先,一眼就能看出来,这两个东西是指针式的表头,就像现实中的机械表头(相信你一定见过)

第二个可能你一下子看不出来,很明显它是一个悬浮式的表头,就像下面的Harry Winston腕表一样

现在先来分析第一个表头

根据现实的表头,可以知道,它的行动模式应该是根部固定,指针在表盘范围内来回摆动,就像这样

将它拆分开来(为了便于识别,我给每个部分都编了号)

--------------
说个题外话,很多新手学了一招半式,尤其是什么“技巧”、“模式”之类的,在遇到问题的时候,脑子里总是不能集中在思考问题上,而是纠结在某个比较好入手的点上去想它究竟该怎么具体实现,怎么编码,用哪种模式好,要分几个类,等等。如果你有这种情况,请及时抽自己一嘴巴,告诫自己:先把问题思考完分析完再去想实现!
------------
再来看A3,指针的形状看起来比较复杂,还要留出A4固定栓的孔位。A4就比较简单了,就是一个圆。
现在各部分都分拆完毕,来分析下它们的本质。
可以很清楚的看到,A1和A2都是扇环,类似这样

放大点

先记在这里,一会再考虑怎么实现。
A3虽然形状比较复杂,但你在这里是做软件的,不是做硬件,没必要把真实世界里的东西1:1照搬过来。当你觉得参照实物难以实现的时候,你就需要变通了。A3说起来复杂,但这里是平面化的视觉效果,那么就可以利用这个进行简化,就像这样

那根细细的牙签指针,可以看成是一个很窄的梯形,或者三角形也行,随你喜好,因为原图比较模糊,所以到时候看看实际效果,差不多就行了。

既然指针都已经“变通”了,那么之前分析的A1和A2两个扇环,还是显得复杂了点,进一步简化,将它们“变通”成两个扇面


-----------
最后,按照层次把所有元件都排列一下



---------------
现在可以动手编码了。。吗? 
别着急,你没看见第二个表头和这个很类似吗?,等分析完了再说,没准还能用上你天天玩了命都想用到项目里的牛逼的设计模式呢。。。
----------
分析第二个表头

(未完待续) --------------------编程问答--------------------
引用 32 楼 zhuankeshumo 的回复:
不要在意这些细节。。。 --------------------编程问答--------------------
引用 31 楼 zhuankeshumo 的回复:
问个问题 gdi+画出的圆有锯齿怎么吧?  开了anti锯齿也不行
我想说我画的就没有。。人品不给力? --------------------编程问答-------------------- 谢谢分享。跟着一起试试。 --------------------编程问答-------------------- 多谢分享,跟着一起试试。  --------------------编程问答--------------------
引用 40 楼 conmajia 的回复:
Quote: 引用 31 楼 zhuankeshumo 的回复:

问个问题 gdi+画出的圆有锯齿怎么吧?  开了anti锯齿也不行
我想说我画的就没有。。人品不给力?
conmajia 的rp很给力 --------------------编程问答-------------------- 我 多谢分享,跟着一起试试。  多谢分享,跟着一起试试。   --------------------编程问答-------------------- 多谢分享,学习中 --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- 挺好 ~``````````` --------------------编程问答-------------------- --------------------编程问答-------------------- 真的很不错。。 --------------------编程问答-------------------- 我是来围观猪腿子的  --------------------编程问答--------------------
引用 51 楼 rayyu1989 的回复:
我是来围观猪腿子的 
公务狗请自重。。 --------------------编程问答--------------------
野比,我以前也做过一个类似的,用在证券软件中
--------------------编程问答--------------------
引用 53 楼 bdmh 的回复:
野比,我以前也做过一个类似的,用在证券软件中

good,欢迎指导 --------------------编程问答-------------------- 编程?我想要啊,可是怎么觉得这和我之前接触的一点都不一样 --------------------编程问答-------------------- 这个比windows程序设计上画钟表的那个难???
但是楼主这么有耐心从网上弄实物截图,教学精神可嘉 --------------------编程问答--------------------
引用 13 楼 caozhy 的回复:
问一个比较傻的问题。屏幕录像做成gif有没有高效的工具?


FSCapture可以吧。。 --------------------编程问答-------------------- 很好很强大,谢谢 --------------------编程问答-------------------- 除 --------------------编程问答-------------------- 很好很强大,谢谢! --------------------编程问答-------------------- 除 --------------------编程问答-------------------- 除 --------------------编程问答-------------------- 除 --------------------编程问答-------------------- 除 --------------------编程问答-------------------- 除 --------------------编程问答-------------------- 玩转样式,玩转模板, --------------------编程问答-------------------- --------------------编程问答-------------------- 支持楼主,现在网上学习越来越重要了,需要更多象楼主这样的人 --------------------编程问答-------------------- 除 --------------------编程问答-------------------- good,挺不错 --------------------编程问答-------------------- 除 --------------------编程问答-------------------- 除 --------------------编程问答-------------------- 不错不错,感谢分享 --------------------编程问答-------------------- 不错不错,感谢分享 --------------------编程问答-------------------- 不错不错,感谢分享
--------------------编程问答-------------------- 很不错, DX的控件不仅是界面 --------------------编程问答-------------------- 又能看到野比的帖子了. 顶一个. --------------------编程问答--------------------
引用 10 楼 Pc498471249 的回复:
你是不是觉得winform很好玩?    那是因为你没有体会过WPF的强大之处。 
劝你静下来来潜心研究一下WPF ,再回头来写写这些所谓的第三方控件。    你会发现 winform真的太他妈傻逼了!

如果你能写一个winform出来,我就觉得winform很SB,否则我就认为你很SB。 --------------------编程问答-------------------- 这个看丐来应该是不错的 --------------------编程问答-------------------- 除 --------------------编程问答-------------------- 除 --------------------编程问答-------------------- 必须要顶啊 --------------------编程问答-------------------- --------------------编程问答-------------------- 支持野比,我也是只用winform做控件,觉得好玩,主要用习惯了,感觉自绘很有意思,dev的确牛,我写控件就是学的dev --------------------编程问答-------------------- 除 --------------------编程问答-------------------- 给力啊啊啊啊啊啊啊啊 --------------------编程问答-------------------- 给力啊啊啊啊啊啊啊啊  --------------------编程问答-------------------- 我很想学学! --------------------编程问答--------------------
学习了,,, --------------------编程问答--------------------
引用 53 楼 bdmh 的回复:

野比,我以前也做过一个类似的,用在证券软件中

撸主可以把你的这个报表代码开源一下吗,我也想学这方面的 --------------------编程问答-------------------- 除 --------------------编程问答-------------------- --------------------编程问答-------------------- 新手,感觉很牛。现在属于enen --------------------编程问答-------------------- --------------------编程问答-------------------- 值得学习,加油 --------------------编程问答-------------------- 很厉害啊 支持下 --------------------编程问答-------------------- --------------------编程问答-------------------- 多谢分享,跟着一起试试。 --------------------编程问答-------------------- 熟悉GDI+用GDI+,熟悉WPF用WPF,熟悉GDI+的编写速度比WPF快,熟悉WPF的不能了解到像素级原理,各有所长,你会用哪个就用哪个. --------------------编程问答-------------------- 除
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,