VC++.net/MFC绘制一条曲线(比如y=0.1x+2)的实现。
要求:1. 有坐标轴,坐标轴上要显示坐标。
2. 图像可以缩放
3. 鼠标停留在曲线上时显示坐标。
要求:1. 有坐标轴,坐标轴上要显示坐标。
2. 图像可以缩放
3. 鼠标停留在曲线上时显示坐标。
解决方案 »
- 自己写一个浏览器,如何像世界之窗 搜狗那样给浏览器静音呢?牛人进!!!
- 请问:已经打开一个位图,并且在位图上画直线,怎样取得直线和位图中某些区域交点的坐标??
- happy__888([顾问团]寻开心) 图像保存时出现失真,但dc直接显示没有问题,灰度处理后保存也没有问题 (续)
- 如何改变AfxMessageBox提示窗口的标题栏
- 一个超难的问题???
- 关于读取文件中特定字段的问题
- 在ATL里面,如何实现打开一个对话框,浏览目录的时候选择多个文件?
- ****急急急****使用ADO连接SQLSERVER开始还能连接成功,运行N次后提示——未指定错误,[DBNMPNTW]拒绝访问,是何原因************
- MFC:CrearteDirectory问题
- 如何在任务栏显示一个图标呢?
- 一个关于CControlBar的问题
- MDI的窗体分割应该怎么实现?与SDI的分割有什么区别?
1.坐标轴用直线画
2.方程已经定了,缩放很容易
3.一个鼠标消息即可
/////////////////////画曲线函数////////////////////////////
////////////////////直角坐标下的////////////////////////
//y=fun(x)
//p---绘图设备指针
//fun---函数指针
//StartP1---x的起始值
//StartP2---x的终止值
//PX---坐标原点x方向位置
//PY---坐标原点y方向位置
//Mx---x方向放大倍数
//My---y方向放大倍数
/////////////////////////////////////////////////////////
void DrawCurve(HDC hDC,double (*fun)(double),double StartP1,double EndP1,int PX,int PY,double Mx,double My)
{
int i,N=int(Mx*(EndP1-StartP1));
double x,y,dx;
dx=(EndP1-StartP1)/N;
x=StartP1;
y=(*fun)(x);
MoveToEx(hDC,PX+int(x*Mx),PY-int(y*My),NULL);
for(i=1;i<=N;i++)
{
x=StartP1+i*dx;
y=(*fun)(x);
LineTo(hDC,PX+int(x*Mx),PY-int(y*My));
}
}
////////////////////任意坐标下的////////////////////////
void DrawCurve(HDC hDC,double (*funX)(double),double (*funY)(double),double StartT,double EndT,int PX,int PY,double M)
{
int i,N=int(M*(EndT-StartT));
double t,x,y,dt;
dt=(EndT-StartT)/N;
t=StartT;
x=(*funX)(t);
y=(*funY)(t);
MoveToEx(hDC,PX+int(x*M),PY-int(y*M),NULL);
for(i=1;i<=N;i++)
{
t=StartT+i*dt;
x=(*funX)(t);
y=(*funY)(t);
LineTo(hDC,PX+int(x*M),PY-int(y*M));
}
}