我想实现一个视图标尺用于工控显示采集到的数据。
具体是这样的,y值的范围是:-2000 ~ +2000 最小刻度为0.001
随着视图缩放调整刻度而调整,刻度步长为以下几种值:
500 50 5 0.5 0.05 0.005
200 20 2 0.2 0.02 0.002
100 10 1 0.1 0.01 0.001
求法如下:那位有更好的求法?
delta=0; a=500;b=200;c=100
RangeY = value;
while(1)
{
if ( 2 < RangeY/a < 9)
{
delta=a;break;
}
else if ( 2 < RangeY/b < 9)
{
delta=b;break;
}
else if (2 < RangeY/c < 9)
{
delta=c;break;
} a /=10; b/=10; c/=10;
}
比如说-13 ~ 17 找到步长为5
这时的刻度为:(刻度为步长的整数倍)
-10 -5 0 5 10 15
而不是
-13 -8 -3 2 7 12 17
怎么到第一个显示的刻度-10呢?
大家能提供一个算法吗?
具体是这样的,y值的范围是:-2000 ~ +2000 最小刻度为0.001
随着视图缩放调整刻度而调整,刻度步长为以下几种值:
500 50 5 0.5 0.05 0.005
200 20 2 0.2 0.02 0.002
100 10 1 0.1 0.01 0.001
求法如下:那位有更好的求法?
delta=0; a=500;b=200;c=100
RangeY = value;
while(1)
{
if ( 2 < RangeY/a < 9)
{
delta=a;break;
}
else if ( 2 < RangeY/b < 9)
{
delta=b;break;
}
else if (2 < RangeY/c < 9)
{
delta=c;break;
} a /=10; b/=10; c/=10;
}
比如说-13 ~ 17 找到步长为5
这时的刻度为:(刻度为步长的整数倍)
-10 -5 0 5 10 15
而不是
-13 -8 -3 2 7 12 17
怎么到第一个显示的刻度-10呢?
大家能提供一个算法吗?
解决方案 »
- 有懂的没?帮我看看
- 请问如果我要完成这些功能,用WinInet可以实现吗?
- 怎么把彩色图像变成黑白?
- 在vc中,如何在flexgrid控件中的格子(cell)中加载图片(bitmap或icon)
- 怎么获得用GetNextWindow找到的窗口对应的视图指针?
- 客户端透过公司HTTP代理服务器,访问具有公网IP地址的服务器!
- 有没有学过 <<理论计算机科学>> 的
- 求助:怎样在工具栏放置组合框等不同控件?
- (来人都有分)长城宽带上网的问题,想干掉那个计时器IE窗口,并且每次能自动联上,不用天天输入密码
- 倒分!http://www.csdn.net/expert/topic/1092/1092004.xml?temp=.5949365
- Windows系统锁定后如何用API对已经运行的程序进行操作(如激活窗体,移动位置)!
- 一个关于属性页的问题
RangeY 是指什么??
举例,对于 数据 -13 -8 -3 2 7 12 17 RangeY=??30
-13大的最小的5的倍数不是很简单吗??
(-13)-(-13)%5
CFile myFile("myfile.dat", CFile::modeCreate | CFile::modeReadWrite);// Create a storing archive.
CArchive arStore(&myFile, CArchive::store);// Store the class CAge in the archive.
arStore.WriteClass( RUNTIME_CLASS(CAge) );// Close the storing archive.
arStore.Close();// Create a loading archive.
myFile.SeekToBegin();
CArchive arLoad(&myFile, CArchive::load);// Load a class from the archive.
CRuntimeClass* pClass = arLoad.ReadClass( );
if (!pClass->IsDerivedFrom(RUNTIME_CLASS(CAge)))
arLoad.Abort();
int y = i / 5 * 5; //注意:整数除法,-13 / 5 = -2
http://community.csdn.net/Expert/topic/4330/4330922.xml?temp=.1156732
我也间或琢磨了一阵子,继续努力。
delphi里头有个自带的控件DBChart就完全实现了这样的功能。