100分——请教关于浮点数做图的问题!
得到的数据都是浮点数,
例如:
X1=1,Y1=20.120;
X2=2,Y2=23.011;
........
Xn=n,Yn=13.123
需要把上述的数值画成曲线,我想在FormView中的控件里画,可是需要15个控件呀。就是说需要话15个曲线,
最关键的问题是坐标不知道该怎么影射呀!头一次画图,实在不得要领呀!
请大虾指点!
问题点数:100、回复次数:9Top
1 楼GoldenSword(金错刀)回复于 2003-06-01 11:27:09 得分 20
我的经验:
我是在SDI里面画dxf文件图的。映射方式是默认的MM_TEXT所以VIEW的坐标轴是X->右,Y->下
所以要经过两个步骤
1:缩放,跟就画图区和数据区的范围确定缩放比例。
2:平移,需要把数据区的中心移到View的中心。手工计算一下就知道了。Top
2 楼eureka007(发现者)回复于 2003-06-01 13:14:54 得分 0
谢谢楼上的大虾!
可我总是不知道怎么缩放啊!如果缩放,采集的数据是不是就得改变了呀!因为我的数据是浮点数。可是屏幕上点确是整数啊!我得怎么处理才行呢!
实在是不明白! :(Top
3 楼W32API()回复于 2003-06-01 13:20:41 得分 10
所以才要有缩放比例啊,在此比例下,数据的保存仍旧按浮点数保存,画图时对坐标取整就好了。
把计算与显示区分开来Top
4 楼huawujin(huawujin)回复于 2003-06-01 13:51:43 得分 60
首先搜索出所有数据的MAX和MIN值,计算出 xx=(x_MAX-x_MIN) yy=(y_MAX-x_MIN)
CPen *pPen,*pOldPen;
RECT rc;
GetClientRect(&rc);
//取1/3位置,保证图形显示在客户区内
int x=rc.right-rc.right/3;
int y=rc.bottom-rc.bottom/3;
float x0=x/xx //x0为缩放比例
float y0=y/yy //y0为缩放比例
//绘图:
pPen=new CPen;
pPen->CreatePen(PS_SOLID,1,RGB(255,0,0));
pOldPen=dc.SelectObject(pPen);
float fx,fy;
for(int i=0;i<length;i++){ //length 为数据个数
fx=(x[i]-x_MIN)*x0;
fy=(y[i]-y_MAX)*y0;
dc.MoveTo((int)fx,(int)fy);
fx=(x[i+1]-x_MIN)*x0;
fy=(y[i+1]-y_MAX)*y0;
dc.LineTo(((int)fx,(int)fy)
}
dc.SelectObject(pOldPen);
delete pPen;
注 : 这个方法是3jaja(3++输入法)大哥教我的,这里借花献佛,希望对你有用。
Top
5 楼eureka007(发现者)回复于 2003-06-01 14:04:16 得分 0
多谢楼上的大虾,领会点了,谢谢!
再UP一下,晚上我来放分
真心谢谢各位的指点!Top
6 楼awnucel(西大耻犹未雪,南京恨何时灭&抵制日货)回复于 2003-06-01 17:15:18 得分 10
upTop
7 楼eureka007(发现者)回复于 2003-06-01 22:32:00 得分 0
楼上的兄弟,谢谢你的up :)Top
8 楼eureka007(发现者)回复于 2003-06-01 22:43:41 得分 0
放分完毕!谢谢各位的指点Top
9 楼eureka007(发现者)回复于 2003-06-01 23:04:29 得分 0
这是怎么回事呀!明明我给分了,怎么看不到大虾得分呢!Top




