| 查看: 1033 | 回复: 7 | ||
[求助]
VC界面求助
|
| 在VC中,基于对话框的应用程序可以调用画图命令输出曲线吗?我弄了一个基于对话框的MFC应用程序界面计算实验参数,算法有了,能不能通过一个控件输出曲线,怎么做?感谢高手不吝赐教,万分感激啊!!! |
» 猜你喜欢
职称评审没过,求安慰
已经有17人回复
投稿Elsevier的Neoplasia杂志,到最后选publishing options时页面空白,不能完成投稿
已经有17人回复
EST投稿状态问题
已经有7人回复
谈谈两天一夜的“延安行”
已经有15人回复
垃圾破二本职称评审标准
已经有11人回复
毕业后当辅导员了,天天各种学生超烦
已经有4人回复
聘U V热熔胶研究人员
已经有10人回复
求助文献
已经有3人回复
投稿返修后收到这样的回复,还有希望吗
已经有8人回复
三无产品还有机会吗
已经有6人回复
【答案】应助回帖
★ ★
感谢参与,应助指数 +1
xzhdty: 金币+2, 谢谢 2012-06-28 20:43:26
感谢参与,应助指数 +1
xzhdty: 金币+2, 谢谢 2012-06-28 20:43:26
可以,在对话框中加入一个组合框(GroupBox)控件,然后在这个控件中画图![]() 无标题.png http://kuai.xunlei.com/d/GXSUWBTGMHGT?p=130497 |

2楼2012-06-28 10:29:33
libralibra
至尊木虫 (著名写手)
骠骑将军
- 程序强帖: 40
- 应助: 817 (博后)
- 金币: 12914.1
- 红花: 64
- 帖子: 2238
- 在线: 287.3小时
- 虫号: 696514
- 注册: 2009-02-05
- 专业: 计算机软件
【答案】应助回帖
★ ★
感谢参与,应助指数 +1
xzhdty: 金币+2, 谢谢骠骑将军 2012-06-28 20:43:16
感谢参与,应助指数 +1
xzhdty: 金币+2, 谢谢骠骑将军 2012-06-28 20:43:16
|
得到控件cdc,然后直接用笔刷画试试 具体参考这帖子 http://paulfzm.iteye.com/blog/974630 |

3楼2012-06-28 15:42:19
voice2001
铜虫 (著名写手)
- 应助: 7 (幼儿园)
- 金币: 7960
- 散金: 12
- 帖子: 2233
- 在线: 297.3小时
- 虫号: 288175
- 注册: 2006-10-21
- 专业: 海洋物理学
4楼2012-06-29 13:43:07
【答案】应助回帖
★ ★
御剑江湖: 金币+2, 谢谢 2012-06-30 18:45:24
jjdg: 编辑内容 2012-07-03 00:48
jjdg: 编辑内容 2012-07-03 00:49
御剑江湖: 金币+2, 谢谢 2012-06-30 18:45:24
jjdg: 编辑内容 2012-07-03 00:48
jjdg: 编辑内容 2012-07-03 00:49
|
示例代码: //在CFormView视图中的GroupBox控件中画经度、纬度、高程变化走势图 void CvrpView:: DrawCordTrend() { CWnd* pWnd; CString strFlag,str; CRect rect; CDC* pDC; CPen pen,*pOldPen,pen2; //画高程、经度、纬度变化走势图的画笔 CPen penAlti,penLong,penLati; //画(无差分)高程、经度、纬度变化走势图的画笔 CPen penNAlti,penNLong,penNLati; CBrush brush,*pOldBrush; POINT ptOrig; COLORREF crRef; int i,iXNum,iYNum,iXStep,iYStep; long iXCenter,iYCenter; double dAltiMax,dAltiMin,dLongMax,dLongMin,dLatiMax,dLatiMin; pWnd = (CStatic*)GetDlgItem( IDC_STATIC_TREND ); pWnd->Invalidate( ); pWnd->GetWindowRect(& rect ); pWnd->ScreenToClient(&rect); rect.left += 18;//10 rect.top += 17; //15 rect.right -= 18;//10 rect.bottom -= 12; //10 ptOrig.x = rect.left; ptOrig.y = ( rect.bottom + rect.top ) / 2 ; iXCenter = ( rect.left + rect.right ) / 2 ; iYCenter = ( rect.bottom + rect.top ) / 2 ; pDC = pWnd->GetDC(); //背景透明 pDC->SetBkMode( TRANSPARENT ); //通用笔,灰白色 pen2.CreatePen(PS_SOLID,2,RGB(128,128,128) ); pen.CreatePen(PS_SOLID,1,RGB(0,126,0) ); //画高程曲线的笔 penAlti.CreatePen(PS_SOLID,2,RGB(255,0,0) ); //画经度曲线的笔 //penLong.CreatePen(PS_SOLID,2,RGB(0,255,0) ); penLong.CreatePen(PS_SOLID,2,RGB(200,200,0) ); //画纬度曲线的笔 penLati.CreatePen(PS_SOLID,2,RGB(0,0,255) ); //画(无差分)高程曲线的笔 penNAlti.CreatePen(PS_DOT,1,RGB(255,0,0) ); //画(无差分)经度曲线的笔 //penNLong.CreatePen(PS_DOT,1,RGB(0,255,0) ); penNLong.CreatePen(PS_DOT,1,RGB(200,200,0) ); //画(无差分)纬度曲线的笔 penNLati.CreatePen(PS_DOT,1,RGB(0,0,255) ); pOldPen = pDC->SelectObject(&pen2); //刷子 brush.CreateSolidBrush( RGB( 255,255,255) ); pOldBrush = pDC->SelectObject( &brush); pDC->FillRect( &rect,&brush ); //画边框 pDC->MoveTo( rect.left,rect.top ); pDC->LineTo( rect.left,rect.bottom ); pDC->LineTo( rect.right,rect.bottom ); pDC->LineTo( rect.right,rect.top ); pDC->LineTo( rect.left,rect.top ); //画X、Y轴 pDC->MoveTo( rect.left , ( rect.bottom + rect.top ) / 2 ); pDC->LineTo( rect.right, ( rect.bottom + rect.top ) / 2 ); pDC->TextOut( rect.left - 16,( rect.bottom + rect.top ) / 2 - 8 ,"00" ); pDC->TextOut( rect.right + 6 ,( rect.bottom + rect.top ) / 2 - 8 ,"X" ); pDC->TextOut( rect.right - 10 ,rect.bottom - 3 ,"108" ); //68 pDC->MoveTo( ( rect.left + rect.right ) / 2 , rect.top ); pDC->LineTo( ( rect.left + rect.right ) / 2 , rect.bottom ); pDC->TextOut( rect.left - 16,rect.top - 4 ,"26" ); //+8,14 pDC->TextOut( rect.left - 16 ,rect.bottom - 4 ,"-26" ); //-10,-8,-14 pDC->TextOut( ( rect.left + rect.right ) / 2 - 9,rect.bottom - 3 ,"54" ); //34 //画轴上的箭头 pDC->MoveTo( rect.right,( rect.bottom + rect.top ) / 2 ); pDC->LineTo( rect.right - 6,( rect.bottom + rect.top ) / 2 - 6 ); pDC->MoveTo( rect.right,( rect.bottom + rect.top ) / 2 ); pDC->LineTo( rect.right - 6,( rect.bottom + rect.top ) / 2 + 6 ); pDC->MoveTo( ( rect.left + rect.right ) / 2,rect.top ); pDC->LineTo( ( rect.left + rect.right ) / 2 - 6 ,rect.top + 6 ); pDC->TextOut( ( rect.left + rect.right ) / 2 + 9,rect.top ,"Y" ); //34 pDC->MoveTo( ( rect.left + rect.right ) / 2,rect.top ); pDC->LineTo( ( rect.left + rect.right ) / 2 + 6 ,rect.top + 6 ); //画一个点,第一象限45度角 pDC->SelectObject(&penNLati); pDC->MoveTo( ( rect.left + rect.right ) / 2 , ( rect.bottom + rect.top ) / 2 ); pDC->LineTo(( rect.left + rect.right ) / 2 +(rect.right-rect.left)/2,( rect.bottom + rect.top ) / 2+( rect.top - rect.bottom ) / 2 ); pDC->MoveTo( ( rect.left + rect.right ) / 2 +(rect.right-rect.left)/4 ,( rect.bottom + rect.top ) / 2+( rect.top - rect.bottom ) / 4 ); pDC->TextOut(( rect.left + rect.right ) / 2 +(rect.right-rect.left)/4 ,( rect.bottom + rect.top ) / 2+( rect.top - rect.bottom ) / 4,"1(45)" ); pDC->SelectObject(&pen); iXNum = 48;//32 iYNum = 25;//8,14 iXStep = ( rect.right - rect.left ) / ( 2 * iXNum ); iYStep = ( rect.bottom - rect.top ) / ( 2 * iYNum ); //画横轴栅格线 for ( i = 1;i < ( iYNum + 1 ); i ++) { pDC->MoveTo( rect.left, iYCenter - i * iYStep ); pDC->LineTo( rect.right, iYCenter - i * iYStep ); pDC->MoveTo( rect.left, iYCenter + i * iYStep ); pDC->LineTo( rect.right, iYCenter + i * iYStep ); } //画纵轴栅格线 for ( i = 1;i < ( iXNum + 6 ); i ++) //12 { pDC->MoveTo( iXCenter - i * iXStep, rect.top ); pDC->LineTo( iXCenter - i * iXStep, rect.bottom ); if ( !( i % 18 ) ) //17 { str.Format("%02d",i); //pDC->TextOut( iXCenter - i * iXStep - 8,rect.bottom - 3 ,str); pDC->TextOut( i * iXStep - 4,rect.bottom - 3 ,str); str.Format("%02d",( 108 - i ) ); pDC->TextOut( rect.right - i * iXStep - 6,rect.bottom - 3 ,str); } pDC->MoveTo( iXCenter + i * iXStep, rect.top ); pDC->LineTo( iXCenter + i * iXStep, rect.bottom ); } ................. //恢复系统原来的画笔 pDC->SelectObject( pOldPen ); pDC->SelectObject( pOldBrush ); ReleaseDC( pDC ); pDC = NULL; } [ Last edited by jjdg on 2012-7-3 at 00:49 ] |

5楼2012-06-29 16:10:47
zxj1991
铜虫 (小有名气)
- 应助: 0 (幼儿园)
- 金币: 491.4
- 散金: 16
- 帖子: 192
- 在线: 39.7小时
- 虫号: 1872382
- 注册: 2012-06-29
- 性别: GG
- 专业: 机械工程

6楼2012-06-30 14:53:55
7楼2012-07-02 09:55:51
【答案】应助回帖
jjdg: 编辑内容 2012-07-03 00:47
|
请参加5楼的示例代码,代码中的IDC_STATIC_TREND是添加的组合框(GroupBox)控件的ID,在画图函数void CvrpView: DrawCordTrend() 中取得IDC_STATIC_TREND所对应的窗口指针,然后在这个窗口中作图,结果示意图见URL: http://kuai.xunlei.com/d/GXSUWBTGMHGT?p=130497 [ Last edited by jjdg on 2012-7-3 at 00:47 ] |

8楼2012-07-02 14:04:09













回复此楼
mmenglu