当前位置: 代码迷 >> VC/MFC >> MFC 自定义座标系上画点
  详细解决方案

MFC 自定义座标系上画点

热度:148   发布时间:2016-05-02 03:24:06.0
MFC 自定义坐标系上画点
我在对话框中的静态文本框里画了一个坐标轴,横轴自定义以时间为刻度,纵轴以人数为刻度。我怎么把自己得到的数据(实时人数),画到我建立的坐标系中去呢。我尝试画点的时候总是以控件左上角为原点,而不是我建立的坐标原点。怎么进行坐标转换啊,小弟刚接触MFC,还不太懂应该怎么解决,请各位大哥帮帮忙!
------解决思路----------------------
引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

通过SetWindowExt和SetViewportExt的比值来改变坐标轴方向,默认X向右,Y向下,现在Y要向上,只需让Y的比值为负即可,由于不经行放大,所以比例值应为1,所以:
SetMapMode(MM_ISOTROPIC);
SetViewportExt(1,-1);
SetWindowExt(1,1);

这两个函数调用之前必须确保映射模式为MM_ISOTROPIC



坐标是转换过来了,现在有个问题,因为我要每隔一定时间读取数据然后画在坐标轴上,我应该怎么办啊,我用settimer好像不行,我的坐标轴是在onpaint函数中建立的。

把timer或者线程读到的数据放入一个全局的数组或者CArray等动态数组中,OnPaint只负责从中取数据来绘制,timer或者线程
只负责Add数据到Array中然后Invalidate();


大哥能给个具体例子不,感激不尽! [email protected]

OnPaint遍历CArray取对象来绘制,Timer往CArray放一个数据就调用一次Invalidate重绘,这个不能再具体了,Invalidate发送WM_PAINT引发OnPaint执行,原理即是如此,懂得这个就行
  相关解决方案