问题描述
前段时间我发了个帖子,分享了我自己写的一个C#UI类库,演示了窗体类GMForm实现的效果,大家可以再看看。现在类库增加了几个控件,同样分享给大家。这几个控件分别是:GMVScrollBar,GMHScrollBar,GMTrackBar,GMProgressBar,GMRollingBar。这些控件与GMForm窗体一样,都可以通过相应的XTheme来配置出不同的形状和外观,而且支持运行时动态切换。下面看看这些控件的效果图。主界面GMScrollBar效果,上面这些不同形状,不同外观的滚动条都是通过XTheme来配置的。GMTrackBar效果GMProgressBar效果GMRollingBar效果这些控件都是继承自System.Windows.Forms.Control类的,不是继承系统的ScrollBar,TrackBar等类。控件上面的按钮,滚动块等元素都是通过GDI+自绘的,所以原理并不复杂,主要是看你对控件自身功能的了解程度,以及对GDI+的熟悉和熟练程度。这里说明一下GMScrollBar与系统ScrollBar几点差别:(1)对系统ScrollBar,如果LargeChange属性值大于1,那么ScrollBar的最大值是无法通过拖动滚动块来达到的。不知道微软为什么这样做,但我觉得这对使用者来说是很麻烦的,所以GMScrollBar没有这一限制,滚动块拖到最上面就能得到最小值,拖到最下面就得到最大值。(2)对系统ScrollBar,滚动块占滚动条长度百分比是由LargeChange属性值来影响的,GMScrollBar是单独通过MiddleButtonLengthPercentage来设置的。(3)系统ScrollBar同时提供了ValueChanged和Scroll两个事件,但由于这两个事件是一样的,所以GMScrollBar只提供了ValueChanged事件。现在类库的代码量已经超过了一万行,这些代码中,只有一个地方的代码不是我写的,那就是WinAPI类里面WindowsMessage常量定义,API32函数声明,以及相应函数参数常量声明,这些代码是我从MSDN网站,或者其它开源项目中复制过来的,因为这部分代码确实没有必要自己写,而且我也写不了。这部分的代码不到500行。除此之外,类库其它地方的所有代码都是我自己写的。也就是类库超过95%的代码都是原创的,是我一行一行写出来的。类库中窗体及各控件都内置了若干主题,这些主题大部分是模仿现有软件的,只有少数几个是我自己试出来,觉得可以就保留的。使用时,只要实例化这些主题类,并赋给控件的XTheme属性,就能使控件拥有完全不同的外观。类库不提供开发文档,目前也没有开发文档,只有一个文本格式的介绍各控件公开的属性、事件、方法的文件。如果谁对类库感兴趣,需要开发文档的,可以通过邮件联系我,如果需要的人多,我会完善一份开发文档,对类库进行详细的介绍,并给代码添加尽量多的注释。我现在已经把我辛辛苦苦写的代码毫无保留的奉献出来了,所以开发文档是绝对不再免费提供的。
解决方案
本帖最后由 ping3108 于 2014-09-02 19:07:17 编辑
解决方案二:
解决方案三:
感谢你的分享!
解决方案四:
这个要支持
解决方案五:
该回复于2015-10-31 23:39:53被版主删除
解决方案六:
感谢分享.....
解决方案七:
虽然界面在美观上还需要优化。不过相当的不错。楼主继续优化可以当作商业的来出售了。
解决方案八:
这个不错收藏一下
解决方案九:
界面做起来特别不容易,因为细小的问题都很容易被用户发现。所以要支持下lz。
解决方案十:
前来学习~~
解决方案十一:
该回复于2015-10-31 23:44:35被版主删除
解决方案十二:
分享好东西就要顶
解决方案十三:
解决方案十四:
谢谢楼主分享
解决方案十五:
该回复于2015-10-31 23:45:14被版主删除
解决方案:
解决方案:好东西必须支持啊
解决方案:看起来不错的样子
解决方案:
解决方案:我也不喜欢用N多控件拼装,我也喜欢全部绘制.
解决方案:看到好资源就滚进来了。。。。感谢楼主分享
解决方案:学习了,感谢分享!
解决方案:开源的?不如放到git上
解决方案:引用6楼zanfeng的回复:
虽然界面在美观上还需要优化。不过相当的不错。楼主继续优化可以当作商业的来出售了。
感谢支持及建议。
解决方案:引用8楼caozhy的回复:
界面做起来特别不容易,因为细小的问题都很容易被用户发现。所以要支持下lz。
是的,哪怕是一个像素的偏差,一个行为响应有问题,只要被发现了,用户心里可能就感到不舒服。所以做界面的人必须控制好每一个像素,让控件的每个像素,每个行为,都是设计之时所期望的。而要做到这一点,设计或开发人员必须至少做到:一是对控件的功能和行为十分了解,二是认真考虑控件上各元素的大小、间距、边界空白等,三是能熟练使用GDI+各种绘图属性及方法来绘制出所需的结果,四是考虑控件在初始化以及被用户缩放到极大或极小时是否会产生异常。
解决方案:引用22楼rrrfff的回复:
开源的?不如放到git上
现在是开放源代码的,但是不保证后面的继续提供源码,或者保证能继续维护,所以放到专门的开源平台上不合适。现在只是出于兴趣才开发这个类库的,如果类库没有找到收益点,或者没有其它方面的支持,可能就不维护了,或者更新周期很长。
解决方案:必须支持呀!
解决方案:引用19楼dylike的回复:
我也不喜欢用N多控件拼装,我也喜欢全部绘制.
是啊。而且有时候自行绘制是必须的。试想一个支持CheckBox的ListBox,如果你不自己在ListBox上绘制CheckBox,而是加真正的CheckBox控件,那么用户在ListBox里添加1000项,你就要在内存里New出1000个CheckBox控件,这要耗多少内存。
解决方案:支持分享精神,winform,如果弄成无边框的,是不是很多事件都要自己去处理?
解决方案:要支持,贡献的精神是无私的,帮助很多后来人。不顶的写代码一堆bug
解决方案:
解决方案:楼主既然都把代码共享出来了,为什么不发布到code.csdn.net或者github上面去?让那些有兴趣的人都可以参与到这个开源项目来
解决方案:引用28楼linxiaocao的回复:
支持分享精神,winform,如果弄成无边框的,是不是很多事件都要自己去处理?
这点你可以参考CSharp程序员之窗的一个例子:,把这例子搞清楚后你就明白怎么做了。
解决方案:引用31楼vb763305825的回复:
楼主既然都把代码共享出来了,为什么不发布到code.csdn.net或者github上面去?让那些有兴趣的人都可以参与到这个开源项目来
不保证后面的还开源。
解决方案:感谢楼主分享!
解决方案:不错,很好!帮楼主顶起。
解决方案:点赞。做的很好。目前正在看学习学习
解决方案:就是楼主没有写注释的习惯
解决方案:大神。先膜拜,然后屁颠的跑去下载!
解决方案:还不错,谢谢分享,。
解决方案:该回复于2015-10-31 23:56:28被版主删除
解决方案:这个肯定要顶。
解决方案:这个要支持
解决方案:测试了一下,在一个循环里面给那个圆形进度条赋值,但是发现那个圆形的进度条控件会不停的闪烁,是什么问题呢?
解决方案:wpf很适合做这些啊,WinForm落后了,这方面自绘比较困难。
解决方案:不错啊~哥们,有在更新>A<!!!看来我也要花段时间重整下了。。。我代码太臃肿了,是时候整理了QAQ。。。
解决方案:引用楼主ping3108的回复:
我现在已经把我辛辛苦苦写的代码毫无保留的奉献出来了,所以开发文档是绝对不再免费提供的。
搞不懂你这是何必?
解决方案:感谢楼主~感谢楼主~感谢楼主~感谢楼主~感谢楼主~感谢楼主~感谢楼主~感谢楼主~感谢楼主~感谢楼主~感谢楼主~感谢楼主~感谢楼主~感谢楼主~感谢楼主~感谢楼主~感谢楼主~感谢楼主~感谢楼主~感谢楼主~感谢楼主~感谢楼主~感谢楼主~感谢楼主~感谢楼主~感谢楼主~
解决方案:引用43楼chenpeng0118的回复:
测试了一下,在一个循环里面给那个圆形进度条赋值,但是发现那个圆形的进度条控件会不停的闪烁,是什么问题呢?
把你的循环代码贴出来看看。
解决方案:引用46楼sp1234的回复:
Quote: 引用楼主ping3108的回复:
我现在已经把我辛辛苦苦写的代码毫无保留的奉献出来了,所以开发文档是绝对不再免费提供的。搞不懂你这是何必?
开发文档没有随代码一起写,都是记录在草稿上,包括图例,算法分析等,如果把这些整理成正式文档,还需要花很多精力和时间。所以这部分应该作为有偿劳动。
解决方案:引用44楼cangyue080180的回复:
wpf很适合做这些啊,WinForm落后了,这方面自绘比较困难。
WPF在国内用的很少,你在各大招聘网站搜下WPF方面的工作,看出来的结果就知道了。在国内做开发也要看国内的趋势,除非你自己用WPF能欣起巨浪。