为何在填充矩形的时候,高度总是有差呢?比如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: 有一句你的比例计算的不对,最后一个for循环的第一句改为:
len = (int)(percent[i]*15/10);
@king2003: 不过你这代码写的,太缺乏面向对象特性了,谁看了都会晕的
@沧海一杰: 这代码还没用在正式开发中,只是测试阶段,将矩形长度更为你的代码:
len = (int)(percent[i]*15/10);
运行后,如下图:
还真的是比例接近了,矩形的长度跟宽度15有什么关系呢?为什么要*15/10?
真的太感谢你了,帮我了大忙,不过我没豆了,真的3Q吖!
@king2003: 你绘制的每丙条横线间的距离是15,但是你标的刻度间隔是10,所以要这么计算的
@沧海一杰: 我明白了,因为矩形的面积是一样的,所以如果percent[0]=23,width=30/2=15;那么面积是:area=23*15;但在图中矩形与刻度有关,而宽度是不变的,因而要计算出有多少个刻度间隔,所以图中的矩形高度 Height=area/10。
嘿嘿,明白了。不过你也是打五笔吧。