DBChart控件绘制坐标轴的方法很完善,可以根据坐标值上下限自动调整刻度间距和刻度线条数,而且不论实际数值是整数或小数,显示的刻度点的值都能自动调整为1、2、5、10之类的倍数,很符合常见的刻度尺标度。用过的朋友一定深有体会。
小弟很想知道他这个刻度实现的方法,欢迎大家讨论和指点哈。

解决方案 »

  1.   

    这个板块人气真旺,这么快就沉下去了。
    DBChart是delphi的自带控件,没有人用过的么?
    我只要这个坐标自动调整功能的实现思路就可以.....
      

  2.   

    以前在做信号曲线分析时用的是TChart,但随着信号路数的增多,TChart越来越占用CPU时间后来就单独把TChart FastLine实现了,所以你所说的情况我再清楚不过了。我当时的实现方法如下:
    绘图时整个坐标系使用浮点数,只在绘图时4设5入取整,剧个例子,假如现在显示区域有1000个点,X在(100,800)开区间内,而显示区域宽度为600,那么可以得到这样一个比例关系,X的每个值相当于屏幕的vx=600/(800-100+1)个象素,这样绘图横坐标就可以确定为:每个点的横坐标*vx,当然
    垂直刻度线的绘制也许要控制否则就会出现毛刺,其实这需要进行最佳匹配搜索,具体过程如下:
    从大到小寻早最合适的匹配间隔,比如....10000,5000,2000,1000,500,200,100,50,20,10,5,2,1,0.5,0.2,0.1,0.05.......
    匹配方法是这样的,X在(100,800)开区间内也就是说标注偏移范围0—700,找到第一个小于等于700的值,由于从大到小寻早,因此500被找到,那么就以此值的1/10为标注间隔,那么第n条垂直标注线的横坐标是n*500*(1/10)*vx,而其标注值为100+n*500*(1/10).相信通过这种方法你,你会作出最合适的标注线,当然这只是垂直的,同样的方法实用于水平.