| 查看: 1022 | 回复: 7 | ||
[求助]
VC界面求助
|
| 在VC中,基于对话框的应用程序可以调用画图命令输出曲线吗?我弄了一个基于对话框的MFC应用程序界面计算实验参数,算法有了,能不能通过一个控件输出曲线,怎么做?感谢高手不吝赐教,万分感激啊!!! |
» 猜你喜欢
读博
已经有5人回复
到新单位后,换了新的研究方向,没有团队,持续积累2区以上论文,能申请到面上吗
已经有13人回复
博士申请都是内定的吗?
已经有6人回复
之前让一硕士生水了7个发明专利,现在这7个获批发明专利的维护费可从哪儿支出哈?
已经有5人回复
博士读完未来一定会好吗
已经有29人回复
投稿精细化工
已经有4人回复
高职单位投计算机相关的北核或SCI四区期刊推荐,求支招!
已经有4人回复
导师想让我从独立一作变成了共一第一
已经有9人回复
心脉受损
已经有5人回复
Springer期刊投稿求助
已经有4人回复
【答案】应助回帖
★ ★
感谢参与,应助指数 +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 |
» 本帖已获得的红花(最新10朵)

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