希望OrangeUI有个好的开始

有兴趣了解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


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值