摘要:
一、前言上一篇绘制矩形圆角的方式不够完善,感觉写的太过于复杂,将简单的问题复杂化了,本文对此进行了相应的改进,增强对各个圆角的半径的控制。绘制后的圆角效果图如下: 二、圆角半径设计 对于矩行而言,圆角分为左上角、右上角、左下角和右下角。每一个角都会存在相应的半径,用于控制每一个圆角的绘制。设计如下:1publicstructArcRadius2{3privateint_rightBottom;4privateint_rightTop;5privateint_leftBottom;6privateint_leftTop;78publicstaticreadonlyArcRadiusEmpty=. 阅读全文
摘要:
一、前言 本文主要介绍C# GDI+如何绘制矩行的圆角,其中涉及到如何使用位操作来处理组合的技巧。GDI+的本质在于,它能够替代开发人员实现与显示器及其它外部设备的交互。对于控件美化而言,需要达到自己期望的效果,GDI+必不可少。绘制后的圆角效果图如下:二、圆角枚举与相应组合处理设计对于矩行而言,圆角分为左上角、右上角、左下角和右下角。组合情况就分为无圆角、一个圆角、二个圆角、三个圆角以及四个圆角。枚举需要满足该组合情况,没必要在枚举中将 全部组合列出,只需要通过位操作就能计算出属于哪种组合。枚举类设计如下:1[Flags]2publicenumRoundStyle3{4None=0,5Top 阅读全文
摘要:
前段时间看了《【面试】——反应迟钝的递归》中的三个递归算法,斐波那契数列优化后的算法思路确实不错,但是后面2个数列用递归的话,个人感觉有点得不偿失。能不用递归的话,尽量不用,因为有些算法完全可以用数学来解决。因此,本文中将这三个数列的最终算法总结如下。1、计算数组1,1,2,3,5,8,13...第30位的值递归算法如下:publicstaticintCalculateFibonacciSequence(intindex){if(index<=0){return0;}if(index==1||index==2){return1;}returnCalculateFibonacciSeque 阅读全文
摘要:
一、前言上一篇随笔主要将实体转换成相应的Xml或者Xml对象,未考虑到属性的Attribute特性,以后有时间再整理一下。本文中的Xml匹配涉及到类的特性和属性的特性,并且对该类的匹配进行了相应的优化,尽量将反射引起的性能问题降低最低(其实,对于对象数量不是很多的Xml匹配,性能是可以忽略不计的)。 二、类图设计主要思路为:通过反射将与类名的节点匹配,然后匹配属性(属性特性名称或者属性名称)值,设计图如下所示: 类图中各个类的作用如下: PropertyAttribute、ClassAttribute、StringExtension、FuncDictionary的作用详见XmlAttri... 阅读全文
摘要:
一、前言 上篇随笔主要是针对于Xml的特性Attribute与实体之间的匹配与转换。该篇随笔主要内容为将对象转换成相应的Xml以及XElement。这2篇随笔以不同的方式对Xml进行转换与匹配,每种匹配都采用不同的角度进行操作。本文主要为对象实体的转换,下篇侧重于Xml的匹配。 二、Xml转换 2.1 实体集合转换Xml实体集合转换Xml的方法为:public static string ToXml<T>(IList<T> entities, string rootName = "") where T : new(),通过传入的实体集合对象和Xml根 阅读全文
摘要:
一、前言 可扩展标记语言 (XML) 是具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。XML是用来存储数据的,重在数据本身。本文中的代码是几个月前整理的,最近几个月的时间很少写随笔,除了工作以外,主要还是忙于整理自己的框架。这篇随笔主要是针对于XML的特性Attribute与实体之间的匹配与转换,其中的内容包括反射、XML以及LinqToXml,代码的内容也是想到什么就写什么,纯属练习下手感,仅供参考。下一篇随笔将以另外的形式来转换Xml为对象实体,当然,也是以反射为主,和本随笔中的思路差不多,主要是XML的格式和解决方案不同而已。对于. 阅读全文
摘要:
/Files/jasenkin/CircularDependencyTool.zip 阅读全文
摘要:
一、前言IronRuby是.NET下的一个Ruby实现,此外还有Ruby.net这一开源项目,二者的主要区别是IronRuby利用了Microsoft最新推出的DLR,而Ruby.net则是完全利用原有的CLR实现的。IronRuby入门可参阅http://msdn.microsoft.com/zh-cn/magazine/dd434651.aspx。关于IronRuby的一些基本操作,本文不会涉及,本文仅仅是IronRuby对Ruby操作的一个具体实例。其中包括对所有Ruby类的类名,方法名以及参数列表的获取与显示相关的树结构。究其原因采用IronRuby来进行操作,主要是因为通过Ruby的 阅读全文
摘要:
一、前言虚拟模式在许多情况下都很有用。 如果必须从已存在于内存中的非常大的集合填充一个 ListView 对象,则为每项创建一个 ListViewItem 对象会很浪费。 在虚拟模式下,从缓冲之中获取所需的数据进行加载,性能会有很大提高。 在其他情况下,可能需要经常重新计算 ListViewItem 对象的值,对整个集合进行此操作将产生不可接受的性能。如下为虚拟模式的一个应用示例(仿VS2010错误列表),截图如下:二、虚拟模式相关注意点1、设置一个缓存属性,来保存需要加载的数据: protected List<ListViewItem> CurrentCacheItemsSour 阅读全文