mfc直角坐标系下绘制曲线
答案:2 悬赏:40 手机版
解决时间 2021-02-14 16:21
- 提问者网友:佞臣
- 2021-02-13 22:53
我用mfc绘制了一个坐标系,并根据自己的需要编写了一个函数的曲线,给定不同参数得到此函数的不同解的曲线~我现在想实现一个功能,就是清除我画过的曲线,坐标轴都还在,且不退出程序~~请高手给以指导~谢谢
最佳答案
- 五星知识达人网友:洒脱疯子
- 2021-02-14 00:22
OnPaint中画曲线。比如绘图曲线放到一个STL vector中,每次刷屏画图,没有数据就不画曲线了
全部回答
- 1楼网友:摆渡翁
- 2021-02-14 01:34
void ctestdlg::onbuttondraw() { drawcoordinate(cpoint(100,250), 200, 6, 150, 10); } // 顶点坐标, x轴长度, x轴刻度数(含原点), y轴长度, y轴刻度数(含原点) void ctestdlg::drawcoordinate(cpoint point, int xlen, int xnum, int ylen, int ynum) { int x = xlen + 5; int y = ylen + 5; cdc *pdc = getdc(); pdc->setbkmode(transparent); // 设置透明 pdc->moveto(point); pdc->lineto(cpoint(point.x+x, point.y)); // 绘制x轴 pdc->moveto(point); pdc->lineto(cpoint(point.x, point.y-y)); // 绘制y轴 pdc->textout(point.x-5, point.y+5, _t("0")); pdc->textout(point.x+x+20, point.y-5, _t("x")); pdc->textout(point.x-5, point.y-y-20, _t("y")); // 计算刻度宽度 int x_width = xlen / xnum; int y_width = ylen / ynum; int x_pixel = 0; // 当前x坐标 int y_pixel = 0; // 当前y坐标 for(int i=0; imoveto(cpoint(point.x+x_pixel, point.y-2)); // 绘制x轴刻度 pdc->lineto(cpoint(point.x+x_pixel, point.y+4)); if(i > 0) { cstring str; str.format(_t("%d"), i); pdc->textout(point.x+x_pixel-2, point.y+3, str); } } for(int j=0; jmoveto(cpoint(point.x-2, point.y-y_pixel)); // 绘制y轴刻度 pdc->lineto(cpoint(point.x+4, point.y-y_pixel)); if(j > 0) { cstring str; str.format(_t("%d"), j); pdc->textout(point.x-15, point.y-y_pixel-6, str); } } releasedc(pdc); } 当然你也可以通过定义point数组,数组中记录每个点的坐标,接着使用cdc的polylineto或polyline等多边形函数进行线段描绘,效果一样,看你喜欢哪种了
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯