最近手头有个小活儿,需要把一堆干巴巴的数据弄得好看点,老板说别老是表格、数字,能不能搞成图表,直观些。我想想,之前好像在工具箱里看到过一个叫 `chartcontrol` 的玩意儿,就寻思着试试看。
我直接从工具箱拖个 `chartcontrol` 控件到我的 WinForm 窗体上。看着挺简单的,一个白框框。心想这玩意儿应该不难搞。
开始捣鼓数据
拖是拖上去,但关键是怎么把我的数据塞进去让它显示出来?我对着属性窗口研究半天,看到个 `Series` 的东西。点开一看,,原来是“系列”,就是你要画几条线,或者几组柱子。
我先试着手动添加:
- 新建一个 `Series`,给它起个名字,比如“销售额”。
- 然后在这个 `Series` 下面,找到 `Points` 属性,开始加数据点。每个点都要指定 X 值和 Y 值。比如 X 是月份,Y 是那个月的销售额。
手动加几个点,运行一看,图出来!虽然丑点,但至少有东西。这下心里有底。
让数据绑定起来
手动一个个加点肯定不行,数据一多不得累死。我又琢磨,这玩意儿肯定能绑定数据源。果然,在 `Series` 的属性里翻腾一阵,找到 `DataSource`、`XValueMember`、`YValueMembers` 这些。这就好办!
我准备好一个 `List` 对象,里面装着我的数据,每个对象有“月份”和“销售额”两个属性。然后:
- 把这个 `List` 设置给 `chartcontrol` 的 `DataSource` (有时候是设置给 `Series` 的 `DataSource`,看具体情况)。
- 在 `Series` 里,把 `XValueMember` 设置成我的“月份”属性名。
- 把 `YValueMembers` 设置成“销售额”属性名。
再运行,哗一下,所有数据都自动跑到图上去,成一条漂亮的折线图(默认好像是柱状图,我给改成折线图,在 `Series` 的 `ChartType` 属性里改)。这效率,杠杠的!省我老大功夫。
美化一下图表
数据是上去,但默认样式通常都比较朴素。老板要求“好看点”,那就得继续折腾。
- 加标题: 在 `chartcontrol` 的 `Titles` 属性里,添加一个主标题,比如“月度销售趋势图”。
- 坐标轴: 默认的 X 轴 Y 轴可能没说明,看着费劲。找到 `ChartAreas`,里面有 `AxisX` 和 `AxisY`,可以设置它们的 `Title`,比如 X 轴叫“月份”,Y 轴叫“销售额(万元)”。字体大小啥的也能调。
- 图例: 如果有好几条线(多个 `Series`),图例(`Legends`)就很重要,得让它显示出来,告诉别人哪条线代表这个一般默认会显示,也可以调整位置和样式。
- 颜色和样式: `Series` 的颜色、线条粗细、点的形状啥的,都能在各自的属性里找到,慢慢调呗,调到看着顺眼为止。
中间也遇到点小麻烦,比如日期格式在 X 轴显示得乱七八糟,后来查下怎么设置 `*` 才搞定。还有就是数据点太多的时候,标签挤在一起,又研究下怎么让标签隔几个点显示一个,或者自动旋转角度。
最终效果
折腾大半天,总算是把这个 `chartcontrol` 玩明白。交出去的那个带图表的界面,老板看挺满意,说比之前光看数字清楚多。我自己也觉得挺有成就感,毕竟把一堆枯燥的数据变成能说话的图形。
这个 `chartcontrol` 还是挺强大的,虽然刚上手可能需要点时间去摸索它的各种属性和设置,但一旦熟悉,做各种常见的图表基本没啥问题。以后再有类似的需求,心里就有谱,直接上 `chartcontrol` 就行。