D
DelphiTeacher的专栏
Unregistered / Unconfirmed
GUEST, unregistred user!
有兴趣了解OrangeUI的,或是一起探讨皮肤界面的,欢迎加入OrangeUI For FMX 技术支持QQ群10900297,
从事Delphi的控件开发已经五个年头了,做过不少套皮肤,开发过无数的控件,
但是,三年来,几乎都在做重复的工作,那里文本绘制的坐标改一下,这里加一个图片,从基类控件中派生修修补补的,
而且,控件的设置几乎是运行时的,也就是只能靠代码来设置皮肤控件的属性,对自己来说勉强可以将就一下,
可是,若要给别人用,别人肯定会觉得很难用。
着实花功夫,感觉不能再这么下去的。
从2012年年初的时候就在设计一套皮肤控件了,
一开始的时候,野心勃勃的,想着这也要实现,那么要实现,到最后,七月份的时候,发现能力有限,几万行代码白写了,
从中明白凡做大事,由易到难,由简到繁的过程。
这次的皮肤控件设计我认为是比较完美的,
主要是将控件和绘制行为逻辑独立开来了,
一般像我开发控件的模式,比如有两种不同风格的按钮,
我会先开发一个比如TCustomButton,然后再继承出两种控件,
TStyleAButton和TStyleBButon,
但是现在,我的设计思路是只开发一个TSkinButton,
然后这个TSkinButton拥有一个SkinStyle类,
SkinStyle类封装按钮绘制和行为的逻辑,
然后写一个StyleA和一个StyleB,
我想放一个StyleA的Button在窗体上时,
我选一个TSkinButton按钮在窗体上,将它的SkinStyle设置为StyleA即可,
避免了控件面板上按钮控件过多过于眼花
有一点一直在思考,
一个皮肤控件包的生命在哪里?
像RZ,DEV,BS和AS,这些出名的,
这些控件包,都有多款皮肤,很多功能强大又好看的控件,
这些不禁令我感叹,
我一个人的力量,究竟能不能开发出这么庞大的控件包,
毕竟人力有限,能力有限
为了给OrangeUI增加皮肤包解决方案,
又进行了大改,花费了一个多星期对它大动手脚,到现在也还只完成了一半,
皮肤包解决方案其实就是将所有的素材放在一个皮肤包文件中,
比如有两个一模一样的窗体,它们使用同一幅图片做为背景,
一般情况下,我们会给这两个窗体分别加载这幅图片,
这样,增加了内存使用量,如果这种情况严重的话,会使用运行时的内存臃肿不堪,
也为了在设计时能看到使用皮肤包后的效果,还需要很大的工作量。
由于将绘制引擎分离出来了,所以,可以支持GDI, GDI+等其他的方式,
需要一些时间来完善,将这些绘制文字,图片等功能封装起来
皮肤包设计器也还没有弄好,唉,一大堆东东,没有几个月是搞不定的。
由于DirectUI控件有先天的优势,就是拉动窗体的时候不会闪烁,还可以背景透明,
所以如何将普通的控件和DirectUI的控件共用同一个绘制方法,同一个控件行为逻辑,
还是蛮头疼的,再想想,基本的DirectUI控件对于一些要求比较高的软件还是需要的。
预计OrangeUI初步完成要在13年的6,7月份了,
不管怎样,凡大事做于细,难事做于易,
求个尽善尽美吧
今天是星期六,抓了一天的虫子,这个虫子太难抓了,虽然最后发现只是小小一句代码,
但是它的破坏力还真是惊人啊。。。
今天又是个大改的日子,想好如何将属性分离出来的方法了,便于多种类型的控件共用相同的代码,
Delphi没有多重继承真是累啊,做起来,虽然有接口,但是总不致于每类控件都实现吧,那虽然是复制粘贴,但代码冗余太大了,
将很多东西都脱离出来有一个弊端,就是对用户不友好,
比如原先很简单的TCheckBox.Checked属性,
如果我将它封装进TCheckBoxProperties类,供DirectUI控件和普通的Win控件共同的话,
那么使用起来就会是SkinCheckBox.Properties.Checked,这么长,不是很方便,
因此,还是需要提供给用户一个方便的接口
最近遇到好些需要重改框架的问题,每次大改,伤筋动骨,几乎是推倒重来,
地基很重要,如果在造房子的时候发现地基有问题,那不是要爆破啦,
所以,不要慌,趁现在东西还少,赶紧处理,相信以后会有好处的。
还有,我得了痔疮,眼情还发炎了,五六点钟起床就写代码,不停的揉眼睛。
上厕所都搬台电脑敲代码。
这些天,OrangeUI卡在一个地方过不去,网上也没有这方面的资料,
我只能不断的思考,期待某一天能够灵光一闪,弄出一个完美的解决方案。
Orange的基础还需要不断的纠正和完善,我也会加快脚步,
尽快的推出,接受大家的指教,并不断的发展和完善
今年是2014年,又重新整理了一下自己,2013年是休息的一年,养了点精神,继续接着OrangeUI,
今年,看着前两年的OrangeUi的代码,一开始有些看不懂了,后来慢慢的熟悉,
发现这个框架还是蛮好的,只是有几个控件的实现方式需要大的改动,
以前想不到很好的解决方法,今年想出了解决办法,
希望今年OrangeUI能被大多数人使用,
鉴于移动平台的开发热情,先推FMX版的OrangeUI
欢迎加入OrangeUI For FMX 技术支持QQ群10900297
作者:DelphiTeacher 发表于2012/12/4 12:25:04 原文链接
阅读:4046 评论:11 查看评论
查看更多...
从事Delphi的控件开发已经五个年头了,做过不少套皮肤,开发过无数的控件,
但是,三年来,几乎都在做重复的工作,那里文本绘制的坐标改一下,这里加一个图片,从基类控件中派生修修补补的,
而且,控件的设置几乎是运行时的,也就是只能靠代码来设置皮肤控件的属性,对自己来说勉强可以将就一下,
可是,若要给别人用,别人肯定会觉得很难用。
着实花功夫,感觉不能再这么下去的。
从2012年年初的时候就在设计一套皮肤控件了,
一开始的时候,野心勃勃的,想着这也要实现,那么要实现,到最后,七月份的时候,发现能力有限,几万行代码白写了,
从中明白凡做大事,由易到难,由简到繁的过程。
这次的皮肤控件设计我认为是比较完美的,
主要是将控件和绘制行为逻辑独立开来了,
一般像我开发控件的模式,比如有两种不同风格的按钮,
我会先开发一个比如TCustomButton,然后再继承出两种控件,
TStyleAButton和TStyleBButon,
但是现在,我的设计思路是只开发一个TSkinButton,
然后这个TSkinButton拥有一个SkinStyle类,
SkinStyle类封装按钮绘制和行为的逻辑,
然后写一个StyleA和一个StyleB,
我想放一个StyleA的Button在窗体上时,
我选一个TSkinButton按钮在窗体上,将它的SkinStyle设置为StyleA即可,
避免了控件面板上按钮控件过多过于眼花
有一点一直在思考,
一个皮肤控件包的生命在哪里?
像RZ,DEV,BS和AS,这些出名的,
这些控件包,都有多款皮肤,很多功能强大又好看的控件,
这些不禁令我感叹,
我一个人的力量,究竟能不能开发出这么庞大的控件包,
毕竟人力有限,能力有限
为了给OrangeUI增加皮肤包解决方案,
又进行了大改,花费了一个多星期对它大动手脚,到现在也还只完成了一半,
皮肤包解决方案其实就是将所有的素材放在一个皮肤包文件中,
比如有两个一模一样的窗体,它们使用同一幅图片做为背景,
一般情况下,我们会给这两个窗体分别加载这幅图片,
这样,增加了内存使用量,如果这种情况严重的话,会使用运行时的内存臃肿不堪,
也为了在设计时能看到使用皮肤包后的效果,还需要很大的工作量。
由于将绘制引擎分离出来了,所以,可以支持GDI, GDI+等其他的方式,
需要一些时间来完善,将这些绘制文字,图片等功能封装起来
皮肤包设计器也还没有弄好,唉,一大堆东东,没有几个月是搞不定的。
由于DirectUI控件有先天的优势,就是拉动窗体的时候不会闪烁,还可以背景透明,
所以如何将普通的控件和DirectUI的控件共用同一个绘制方法,同一个控件行为逻辑,
还是蛮头疼的,再想想,基本的DirectUI控件对于一些要求比较高的软件还是需要的。
预计OrangeUI初步完成要在13年的6,7月份了,
不管怎样,凡大事做于细,难事做于易,
求个尽善尽美吧
今天是星期六,抓了一天的虫子,这个虫子太难抓了,虽然最后发现只是小小一句代码,
但是它的破坏力还真是惊人啊。。。
今天又是个大改的日子,想好如何将属性分离出来的方法了,便于多种类型的控件共用相同的代码,
Delphi没有多重继承真是累啊,做起来,虽然有接口,但是总不致于每类控件都实现吧,那虽然是复制粘贴,但代码冗余太大了,
将很多东西都脱离出来有一个弊端,就是对用户不友好,
比如原先很简单的TCheckBox.Checked属性,
如果我将它封装进TCheckBoxProperties类,供DirectUI控件和普通的Win控件共同的话,
那么使用起来就会是SkinCheckBox.Properties.Checked,这么长,不是很方便,
因此,还是需要提供给用户一个方便的接口
最近遇到好些需要重改框架的问题,每次大改,伤筋动骨,几乎是推倒重来,
地基很重要,如果在造房子的时候发现地基有问题,那不是要爆破啦,
所以,不要慌,趁现在东西还少,赶紧处理,相信以后会有好处的。
还有,我得了痔疮,眼情还发炎了,五六点钟起床就写代码,不停的揉眼睛。
上厕所都搬台电脑敲代码。
这些天,OrangeUI卡在一个地方过不去,网上也没有这方面的资料,
我只能不断的思考,期待某一天能够灵光一闪,弄出一个完美的解决方案。
Orange的基础还需要不断的纠正和完善,我也会加快脚步,
尽快的推出,接受大家的指教,并不断的发展和完善
今年是2014年,又重新整理了一下自己,2013年是休息的一年,养了点精神,继续接着OrangeUI,
今年,看着前两年的OrangeUi的代码,一开始有些看不懂了,后来慢慢的熟悉,
发现这个框架还是蛮好的,只是有几个控件的实现方式需要大的改动,
以前想不到很好的解决方法,今年想出了解决办法,
希望今年OrangeUI能被大多数人使用,
鉴于移动平台的开发热情,先推FMX版的OrangeUI
欢迎加入OrangeUI For FMX 技术支持QQ群10900297
作者:DelphiTeacher 发表于2012/12/4 12:25:04 原文链接
阅读:4046 评论:11 查看评论
查看更多...