究竟现在大家在.net的开发中还有多少在使用控件?

evmarine 发布于 2016年11月24日
无人欣赏。

不管收费的、免费的、国内的、国外的 控件的的使用一方面推进开发速度,一方面又限制了程序猿的编码经验发展(入行不太久的), 有时候会碰到这种,“我之前都是都是用的xxx控件,现在这个我不会/没xxx控件我没法做”,控件的使用真的是双刃剑,应该谨慎,想看看大家的项目是怎样处理这个问题的

共9条回复
tinyfool 回复于 2016年11月24日

自己搞不定的用控件很正常,自己要花大量的时候开发的用控件也很正常,没啥问题吧

blackjack 回复于 2016年11月24日

不太清楚你指的是web开发还是客户端开发。 web端确是有强大的控件库,但是有个不可避免的原因就是越强大,越难以修改和自定义。 客户端不太清楚,目前应该是以wpf为主,感觉应该是自己手写比较多吧。

xiaotie 回复于 2016年11月26日

自己写控件,不当调包侠

清醒疯子 回复于 2016年11月26日

3楼 @xiaotie 厉害,那得自己从头到尾封装一套了:)

xiaotie 回复于 2016年11月26日

4楼 @清醒疯子

没想的那么复杂。参见俺的文章 只学一点点:我的技术学习策略,基础代码也就1000行左右,不牵扯到文字输入的地方,都可以搞定。这个东东,俺做flash开发时实现了一套,做c#开发时,实现了一套(兼容winform,iOS,android),做html5开发时,在 html5 canvas 上实现了一套。复杂的UI需求,俺都直接上这个东东,基于它,俺的 winform 程序跟 wpf 程序一样漂亮。

xiaotie 回复于 2016年11月26日

4楼 @清醒疯子

核心:

(1) 绘制API,2D的API各个平台大同小异,甚至连函数名称都一样。核心API就那么几个,掌握了能用一辈子;

(2) 基础的元件,DisplayObject,这个就是把绘制API的第一层抽象,抽象出x,y,width,height,等等最基础的东西,这样一般思考问题时,就从物理层(绘制API)上升到逻辑层了;

(3)容器,容器继承自DisplayObject,又能向里面添加 DisplayObject,容器实现UI元件的组合逻辑,包括分层,visible,传递绘制上下文时自动做好坐标转换,让传入DisplayObject的绘制坐标系是它的局部坐标系;

(4)舞台(Stage),舞台嵌入在平台中,负责将平台的原生事件转换成容器事件和元件事件。

核心就这四个类,抽象好了,几乎打遍天下。对每一个平台而言,底层渲染层API略有区别,平台的事件层API略有区别,元件和容器层的逻辑都是一样的。特灵活,开发效率也不错。

文本输入我没实现,这个实现工作量很大,写好不容易。其它的,什么花式花样的UI需求俺都能用这套东西搞定。

生石花 回复于 2016年11月27日

6楼 @xiaotie 你好,请问你这套自己写的库,是同一套代码,还是根据不同平台,用不同的语言实现了一遍?比如HTML5伤用javascript重写了一遍?

xiaotie 回复于 2016年11月27日

7楼 @生石花

html5 下用 haXe 实现的,还是10年-12年间的事情。

具体演化过程:最初是做在线试头发,用的是Flex的UI库,后来做在线化妆,因为Flex太重了,而Flash自带的UI又太丑了,我自己就搞了套UI,用俺的这套UI我做了在线化妆,大头贴,多款视频应用,电子杂志应用,在线编辑视频字幕应用。后来,电子杂志的客户需要支持平板电脑,我又把它移到html5上了,自己搞了套渲染引擎,把电子杂志应用给移植了过来。后来做winform下开发,因为winform的控件都是windows窗体,不但太重影响性能,并且局限性很大,界面上有太多元素容易歇菜,我又把这套弄到winform下,今年上半年试了下把这套东西移植到xamarin/iOS, xamarin/Android 下,也搞了个Demo。去年客户要做手机化妆,我又用java搞了套。

东西越做到后来越凝练,都是 OO 代码,特别好翻译,业务逻辑也大同小异,就是语法不同。

evmarine 回复于 2016年11月28日

我的个人看法是,在最开始学习的时候,自己多写,少用控件,等到把原理性的东西搞明白了,以后不管是用现成控件、自己封装还是换以前没有接触过的新控件,都不会有太大问题

登录 或者 注册