请教vc绘图问题!用lineto,moveto

fogsea 2004-04-04 10:05:18
小弟我想要绘制一条曲线,该曲线的各个点都是已知的
然后我就用lineto不停的循环绘制,可是得出的是一条直线,
希望得到的是一条类似双曲线在第一象限的一支,应该是弯的,
而且那条线已经超出了绘制的坐标区域
我的循环有800步,每步的步长是0.01,即相邻两个点的横坐标相差0.01
不知该怎么办了

源代码如下:
在onpaint()里面
void CTestDlg::OnPaint()
{
.......//这里是计算各个坐标处的纵轴值,以及pDC->SelectObject(pPenBlue)
for (i=0;i<800;i++)
pDC->LineTo(i*0.01,380-coor);
.......

}
恳请大家看看我该怎么做,这样做行么
或者有什么绘图控件能实现我需要的功能
着急~~~~
谢谢!!
问题解决立即给分!
不够再加!!
...全文
698 点赞 收藏 9
写回复
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
PDD123 2004-04-04
我以前用vc画图,多刷新几次,整个屏幕都变花了。
回复
yyf_ty 2004-04-04
LineTo(i*0.1,380-coor)就可以了,它不会区分小数点后面的数的,因为它只接受整型量,如果你没有设置模式的话,就是一点代表一个像素,0.几可像素是不可能有的
回复
fogsea 2004-04-04
to vcforever(霓裳羽衣);我试试!
回复
bluehunters 2004-04-04
首先得有 MoveTo,这样才能确定从那里开始画,不然很可能出现画出象限的现象。
因为初试的点不知道Move到那里去了。
回复
goooool 2004-04-04
void CTestDlg::OnPaint()
{
.......//这里是准备工作,如pDC->SelectObject(pPenBlue)
//在这儿先
pDC->MoveTo(point);//point是点的坐标
for (i=0;i<800;i++)
{
.......//这里是计算各个坐标处的纵轴值,
pDC->LineTo(i*0.01,380-coor);//这儿坐标最好用int型
.......
}
}
只要你的坐标计算正确,应该没有问题的。
回复
vcforever 2004-04-04
你需要定义两个CPoint类型的变量m_prePoint用来存放前一个点的坐标,m_curPoint用来存放当前点的坐标,然后使用pDC->MoveTo(前一个点的坐标) pDC->LineTo(当前点的坐标),然后每循环一步,取得下一个点的坐标,把下一个点的坐标赋给m_curPoint,把上一步的哪个当前点坐标赋给m_prePoint,然后再使用MoveTo和LineTo画线,依次类推,就可以画出曲线了!

回复
fogsea 2004-04-04
上面程序流程贴错了,是
void CTestDlg::OnPaint()
{
.......//这里是准备工作,如pDC->SelectObject(pPenBlue)
for (i=0;i<800;i++)
{
.......//这里是计算各个坐标处的纵轴值,
pDC->LineTo(i*0.01,380-coor);
.......
}
}
在线等待!谢谢
回复
fogsea 2004-04-04
我算出来的数都是类似12.2233这样的,所以我发现
用lineto不好实现,改用mschart控件了
哪里有mschart空间使用的实例下载阿
回复
diterlish 2004-04-04
LineTo前面要用MoveTo!
回复
发动态
发帖子
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
社区公告
暂无公告