在VC中如何根据函数关系作图 我想用VC编一个作图程序,但不知道应该怎么写。比如我有个函数y=x+x^2,现要把这个函数的图形做出来。请各位高手指点。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 计算各点的坐标,在内存DC中画图,然后BitBlt到视图里 先确定坐标系,然后x逐一代入函数,计算出y值,然后再CDC中SetPixel(x,y)............. 1楼2楼综合起来 不过SetPixel(x,y)不行吧,MoveTo(),LineTO() 先确定坐标系,最好是建立和数学坐标系一样的坐标,然后根据函数关系式来计算点的坐标,用MoveTo,LineTo来连线,x取小一点,这样图形逼真一点 基本确定好位置 后 MVOETO LINETO 就可以了…… 用下面代码设置笛卡尔坐标系void SetIsotropic(HDC hdc, int cx, int cy){ ::SetMapMode(hdc, MM_ISOTROPIC); ::SetWindowExtEx(hdc, 1000, 1000, NULL); ::SetViewportExtEx(hdc, cx, -cy, NULL); ::SetViewportOrgEx(hdc, cx/2, cy/2, NULL);}然后定义一个point数组存放一系列X,Y,就像用手在纸上画一样描点然后用Polyline()函数绘制就可以! 我觉得楼主可能是问怎么实现画图吧。画图的api先不说,给出数学实现。y = x +x^2要实现图形,必须让用户输入 x的范围,比如 1 <x< 5然后根据画图的精确度,你确定一个间隔,比如 0.1然后做一个这样的循环:x1 = 1;x2 = 5;step = 0.1;point p1, p2;p1.x = x1;p1.y = x1 + x1^2;dc.moveto(p1); //这里自己进行坐标轴的移位与比例缩放。for (double t = x1; t < x2; t+= step){ p2.x = t; p2.y = t + t^2; dc.lineto(p2); p1 = p2;}这样画出来就是一个图形了。 画图是一方面,主要关注的需要分步,第一,坐标系第二,坐标第三,Point对象第四,双缓冲第五,销毁对象可能有遗漏的步骤。 滚动窗口画曲线问题??? 有没有会用OllyDbg的 VC 开发的ActiveX控件 Delphi 7下使用时一些属性看不到。 如何在类间定义全局变量? 各位大侠,如何利用VC封装asp代码? 用vc6自动生成的基于对话框的应用程序问题??? 如何使用Windows API获取硬盤序列号? 一个出错提示我看不懂不知哪位可以指点一下。 如何用 CRichEditCtrl::FindText 从后往前的查找特定字符串! 编译时可否不管 c2011,c2365错误提示? 请问怎样拦截.dll文件中调用某个函数后弹出的消息框?谢谢!! 求购《windows程序设计》 (北京) (顶者有分,先到先得)
void SetIsotropic(HDC hdc, int cx, int cy)
{
::SetMapMode(hdc, MM_ISOTROPIC);
::SetWindowExtEx(hdc, 1000, 1000, NULL);
::SetViewportExtEx(hdc, cx, -cy, NULL);
::SetViewportOrgEx(hdc, cx/2, cy/2, NULL);
}然后定义一个point数组存放一系列X,Y,就像用手在纸上画一样
描点
然后用Polyline()函数绘制就可以!
然后根据画图的精确度,你确定一个间隔,比如 0.1然后做一个这样的循环:x1 = 1;
x2 = 5;
step = 0.1;point p1, p2;p1.x = x1;
p1.y = x1 + x1^2;
dc.moveto(p1); //这里自己进行坐标轴的移位与比例缩放。for (double t = x1; t < x2; t+= step)
{
p2.x = t;
p2.y = t + t^2;
dc.lineto(p2);
p1 = p2;
}这样画出来就是一个图形了。
第一,坐标系
第二,坐标
第三,Point对象
第四,双缓冲
第五,销毁对象
可能有遗漏的步骤。