首页 新闻 会员 周边

c# 绘制柱状图

0
悬赏园豆:5 [已解决问题] 解决于 2013-10-29 13:56

为何在填充矩形的时候,高度总是有差呢?比如28.3%了都,还没超过20那条线,是不是我哪里坐标设计不对?

graphics.FillRectangle(solidBrush, new Rectangle(per1, 210 - len,15, len));

比如,想画一个width=15,height=25的矩形,那就是

graphics.FillRectangle(solidBrush, new Rectangle(per1, 210 - 25,15, 25));其中210是每条横向坐标中的竖线Y的坐标,是不是还要把width=15,height=25转换成坐标呢?

king2003的主页 king2003 | 初学一级 | 园豆:161
提问于:2013-10-29 11:42
< >
分享
最佳答案
0

从你给的信息看不出问题,主要看你的坐标系统绘制的比例到底是不是对的,再看柱状图的绘制比例是否和坐标系一致,我做过很多,不会有差距的

收获园豆:5
空明流光 | 初学一级 |园豆:106 | 2013-10-29 12:07

我还真没用比例来控制,不知道你的比例是怎么控制的呢?

king2003 | 园豆:161 (初学一级) | 2013-10-29 12:19

@king2003: 这个没法给你说,坐标系还是有点复杂的。坐标系统方向旋转等都会影响绘制的方向和位置,你要贴出你绘制坐标风格的代码以及完整的柱状图的代码,才有可能有人帮你解决,这个太盲目了。

空明流光 | 园豆:106 (初学一级) | 2013-10-29 12:46

@king2003: 有一句你的比例计算的不对,最后一个for循环的第一句改为:

len = (int)(percent[i]*15/10);

空明流光 | 园豆:106 (初学一级) | 2013-10-29 13:20

@king2003: 不过你这代码写的,太缺乏面向对象特性了,谁看了都会晕的

空明流光 | 园豆:106 (初学一级) | 2013-10-29 13:24

@沧海一杰: 这代码还没用在正式开发中,只是测试阶段,将矩形长度更为你的代码:

len = (int)(percent[i]*15/10);

运行后,如下图:

 

还真的是比例接近了,矩形的长度跟宽度15有什么关系呢?为什么要*15/10?

真的太感谢你了,帮我了大忙,不过我没豆了,真的3Q吖!

king2003 | 园豆:161 (初学一级) | 2013-10-29 13:55

@king2003: 你绘制的每丙条横线间的距离是15,但是你标的刻度间隔是10,所以要这么计算的

空明流光 | 园豆:106 (初学一级) | 2013-10-29 14:19

@沧海一杰: 我明白了,因为矩形的面积是一样的,所以如果percent[0]=23,width=30/2=15;那么面积是:area=23*15;但在图中矩形与刻度有关,而宽度是不变的,因而要计算出有多少个刻度间隔,所以图中的矩形高度 Height=area/10。

嘿嘿,明白了。不过你也是打五笔吧。

king2003 | 园豆:161 (初学一级) | 2013-10-29 14:29
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册