前言 以曲线图的方式展示数据,是一个永远都躲不开的事。 之前做过一些曲线图、柱状图、饼图、地图等,都是用的第三方控件或者 API,也试过用 GDI+ 自己绘制。 第三方控件功能丰富、美观,开发周期短,但是性能跟不上。GDI+ 绘制性能极高,可以在极短的时间绘制十万级的图,但是所有功能都要自己代码实现,开发周期很长。 第三方控件比较常见的有 MSChart、DevExpress、TreeChart、ZedGraph、DotNetCharting,数据量一大就开始卡顿。 现在使用 echarts 比 […]
分类:CSharp
winform 使用 CefSharp 嵌入 Chrome 内核
前言 我要绘制数十万级数据量的折线图,普通的 Chart 控件在数据量上去之后就开始卡顿,而且不够美观,功能又少。所以计划使用 echarts 。 winform 使用 webBrowser 控件分分钟嵌入一个浏览器,加载 echarts,相关资料很多,与 JS 交互也很方便。 但是 webBrowser 控件使用的是 windows 自带的 ie 浏览器,ie 浏览器有多菜?反正很菜,我已经被气哭了。 然后就开始摸索怎么把谷歌浏览器嵌到 winform 中。 相关操作网上有很多资料可以参考,写 […]
C# Lazy
前言 合理服用 Lazy<T> 类,可以获得以下两个强大的功效: 1,延迟实例化类,提高应用程序运行效率。 2,实现高效的线程安全的单例。 一,延迟实例化类,提高程序运行效率 对于一个体格庞大、功能繁多的应用程序,启动的时候需要实例化很多对象,以便日后使用。但是有个问题,有些实例化的对象可能一次都不会被用到,那么这个对象的实例化过程就是无效的且是浪费时间的。 .NET 4.0 以后,Lazy<T> 类就可以解决这个问题,在使用到这个类的时候,才回去实例化这个类: usin […]
C# 特性
前言 特性,以 Atrribute 为关键字,声明一种特殊的类,用中括号 [] 括起来,附着在其他类或者方法或者成员上,为程序运行提供额外的信息。 特性可以分为 .Net 预定义特性和自定义特性。 一、预定义特性 预定义特性有很多,比如 Obsolete、Conditional、Discription 等。 Obsolete: using System; namespace ConsoleApp1 { class Program { static void Main(string[] args) […]
C# Action 和 Func
前言 整理归纳一下他俩的联系和区别。 一、联系 Action 和 Func 都是 .Net 预定义的 委托类型。 二、区别 看一下 Action 的定义,有两类: public delegate void Action(); public delegate void Action<in T>(T obj); public delegate void Action<in T1, in T2>(T1 arg1, T2 arg2); public delegate void A […]