建立一个基于对话框的MFC应用,项目名称为“sinGraph”。(具体步骤略)
1. 视图->工具箱->拖入Button按钮。
2. 右键按钮Button1->点击属性->ID修改为 “IDC_SIN“、描述文字修改为“正弦曲线”。
3. 右键“正弦曲线”按钮,选择“添加事件处理程序”,注意程序“类列表”选择CsinGraphDlg;消息类型、函数名按缺省即可。
4. 在添加的程序void CsinGraphDlg::OnBnClickedSin()中添加一下代码:
// TODO: 在此添加控件通知处理程序代码
CRect rect;//这里定义一个GRect类对象,是关于视图窗口数据的
GetClientRect(rect);//得到相对于窗口客户区的坐标。
CDC* pDC = GetDC(); //获得程序当前设备上下文的句柄
///
//以下语句是定义坐标系,可以看做是绘图前的准备工作
pDC->SetMapMode(MM_ANISOTROPIC); //选择自定义坐标系模式
pDC->SetWindowExt(rect.Width(), rect.Height()); //设置逻辑窗口尺寸
pDC->SetViewportExt(rect.Width(), -rect.Height()); //设置窗口物理尺寸
pDC->SetViewportOrg(rect.Width() / 5, rect.Height() / 2);//设置原点
rect.OffsetRect(-rect.Width() / 5, -rect.Height() / 2);//将rect的值重置
///
//利用缺省颜色绘制坐标轴
pDC->MoveTo(0, rect.Height()*0.25);
pDC->LineTo(0, -rect.Height() * 0.25); //绘制纵轴
pDC->MoveTo(0,0);
pDC->LineTo(rect.Width() * 0.6, 0); //绘制横轴
///
//利用红色绘制正弦曲线
CPen redPen, * oldPen;
redPen.CreatePen(PS_SOLID, 3, RGB(255, 0, 0)); //生成红色绘图笔
oldPen = pDC->SelectObject(&redPen); //将红色绘图笔选入
pDC->MoveTo(0,0); //绘图起点
#define PI 3.1415
for (int i = 0; i <= 360; i++) {
pDC->LineTo(i, sin(PI / 180 * i)*(rect.Height()*0.15));
}
pDC->SelectObject(oldPen); //回复画笔
ReleaseDC(pDC); //释放设备
MFC 基于对话框应用绘制正弦曲线
最新推荐文章于 2025-04-12 23:20:47 发布