++++ 解决立即揭帖:探讨DBChart控件的坐标轴实现方法 ++++ DBChart控件绘制坐标轴的方法很完善,可以根据坐标值上下限自动调整刻度间距和刻度线条数,而且不论实际数值是整数或小数,显示的刻度点的值都能自动调整为1、2、5、10之类的倍数,很符合常见的刻度尺标度。用过的朋友一定深有体会。小弟很想知道他这个刻度实现的方法,欢迎大家讨论和指点哈。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这个板块人气真旺,这么快就沉下去了。DBChart是delphi的自带控件,没有人用过的么?我只要这个坐标自动调整功能的实现思路就可以..... 以前在做信号曲线分析时用的是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).相信通过这种方法你,你会作出最合适的标注线,当然这只是垂直的,同样的方法实用于水平. 请教﹐用dbctrlgrid 作为单笔记录的输入画面﹐如何设置按回车键﹐使其输入焦点自动下移到下一个控件………… 要做一个五子棋程序,棋盘不知道要如何实现 关于MEMO里数据的转换,现在出100分,,,,在线. 关于Delphi+Access2000 进行时间范围查询的问题。 求救,高分酬谢 关于时间的问题 急 一个参数技巧的问题: 在线程中SendMessage是否会导致线程的停止? 为什么使用ADO操作远程Sql Server7需要配置Client Network Utility? 关于delphi7中窗体继承的问题 晕,这是什么编译错误?
DBChart是delphi的自带控件,没有人用过的么?
我只要这个坐标自动调整功能的实现思路就可以.....
绘图时整个坐标系使用浮点数,只在绘图时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).相信通过这种方法你,你会作出最合适的标注线,当然这只是垂直的,同样的方法实用于水平.