基于对话框的MFC,画坐标轴

看到你提出的问题"基于对话框的MFC,画坐标轴",能把回答者的源码发我一份吗,我也是要做这方面的但是新手看不明白,跪求源码啊... 看到你提出的问题"基于对话框的MFC,画坐标轴",能把回答者的源码发我一份吗,我也是要做这方面的但是新手看不明白,跪求源码啊 展开
 我来答
wintertear0704
推荐于2016-03-10 · TA获得超过626个赞
知道小有建树答主
回答量:307
采纳率:0%
帮助的人:355万
展开全部
void CStartMonitorDlg::OnPaint()
{
CPaintDC dc(this);

//////////////////////////////////////////////////////////////////////////
//*******画坐标图*******
//////////////////////////////////////////////////////////////////////////
//CRect rect;
GetDlgItem(IDC_DIAMETER)->GetClientRect(rect);
rect.Width();
rect.Height();
//用rect.Width()替代nxLength,rect.Height()替代nyLength
int nxLength=400;
int nyLength=300;

int nxDivisionNumber = 7;
int nyDivisionNumber = 6;

int nMeshLength;

CString str;
int i;

CWnd *pWnd = GetDlgItem(IDC_DIAMETER_TIME_CURVE);
CDC* pDC = pWnd->GetDC();
pWnd->Invalidate();
pWnd->UpdateWindow();

pDC->Rectangle(0,0,nxLength,nyLength);

CPen* pPenRed = new CPen; //创建画笔对象
pPenRed->CreatePen(PS_SOLID, 1, RGB(255,0,0)); //红色画笔

CPen* pPenGreen = new CPen; //创建画笔对象
pPenGreen->CreatePen(PS_SOLID, 1, RGB(0,255,0));//绿色画笔

CPen* pPenBlue = new CPen; //创建画笔对象
pPenBlue->CreatePen(PS_DOT, 1, RGB(0,0,255)); //蓝色画笔

CPen* pPenBlack = new CPen; //创建画笔对象
pPenBlack->CreatePen(PS_SOLID, 1, RGB(0,0,0)); //黑色画笔

//选中黑色画笔,并保存当前画笔
CGdiObject* pOldPen = pDC->SelectObject(pPenBlack);
pDC->MoveTo(30,10); //绘制坐标轴
pDC->LineTo(30,nyLength-30); //垂直轴
pDC->LineTo(nxLength-10,nyLength-30); //水平轴

//横坐标箭头
pDC->MoveTo(nxLength-10-10,nyLength-30-3);
pDC->LineTo(nxLength-10,nyLength-30);
pDC->LineTo(nxLength-10-10,nyLength-30+3);
pDC->LineTo(nxLength-10-10,nyLength-30-3);

//纵坐标箭头
pDC->MoveTo(27,20);
pDC->LineTo(30,10);
pDC->LineTo(33,20);
pDC->LineTo(27,20);

//横坐标数字
nMeshLength = (nxLength-40)/(nxDivisionNumber+1);
for (i=0; i<nxDivisionNumber+1; i++){
str.Format("%d",i);
pDC->TextOut(27+i*nMeshLength, nyLength-27, str);
}

//横坐标标识
str.Format("时间");
pDC->TextOut(nxLength-33,nyLength-27,str);

//纵坐标数字
nMeshLength = (nyLength-40)/(nyDivisionNumber+1);
for (i=0; i<nyDivisionNumber+1; i++){
str.Format("%d",i*25);
pDC->TextOut(3, nyLength-40-i*nMeshLength, str);
}

//纵坐标标识
str.Format("直径");
pDC->TextOut(1,3,str);

//网格线
pDC->SelectObject(pPenBlue);

nMeshLength = (nxLength-40)/(nxDivisionNumber+1);
for (i=1; i<nxDivisionNumber+2; i++){
pDC->MoveTo(30+i*nMeshLength,nyLength-30);
pDC->LineTo(30+i*nMeshLength,10);
}

nMeshLength = (nyLength-40)/(nyDivisionNumber+1);
for (i=1; i<nyDivisionNumber+2; i++){
pDC->MoveTo(30,nyLength-30-i*nMeshLength);
pDC->LineTo(nxLength-10,nyLength-30-i*nMeshLength);
}

//恢复以前的画笔
pDC->SelectObject(pOldPen);

delete pPenRed;
delete pPenGreen;
delete pPenBlue;
delete pPenBlack;
}
你试试看
追问
这个是基于对话框的么,能把代码整个发给我么,这一段我不知道怎么处理,实在感谢。
追答
1. 添加static静态文本框到对话框上, 并修改其ID为IDC_MYSTATIC
2. 在对话框的申明文件即CXXXDlg.h文件中定义变量:
CWnd *pWnd; //获取控件窗口类指针
3. 在其cpp实现文件中的OnInitDialog()函数中获取:
pWnd = GetDlgItem(IDC_MYSTATIC);
4. 在OnPaint()中的代码就是我之前给你的代码
来自:求助得到的回答
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式