闻心阁

一蓑烟雨看苍生,半壶浊酒笑红尘

MFC之在对话框里绘图

2011-05-09 约 1 分钟读完 搬砖秘籍

继续说说那狗血的计算机图形学实习,这次我想实现一个预览的效果,于是乎就涉及到了在对话框里面绘图,本来在view里面绘图都轻车熟路了,这次要在对话框里绘图还是头一回啊,这可是个小挑战!自己在msdn查了一下,然后加上google+百度,找出来一种方法,今晚时间有点紧,就直接放代码了,可以根据个人要求适当修改代码。

STEP 1:找到OnPaint函数

如果找不到,请自己添加,具体方法:

在类视图里找到C***View类,右击,选择属性,点击闪电样式的图标右边的图标,映射WM_Paint()函数即可。

STEP 2:在OnPaint()中添加以下代码

void CSetTing::OnPaint()

{

CPaintDC dc(this); // device context for painting

// TODO: 在此处添加消息处理程序代码

CPen pen(线型,宽度,颜色);

dc.SelectObject(&pen);

CRect rect;

GetDlgItem(IDC_STATIC_PREVIEW)->GetWindowRect(&rect);

//IDC_STATIC_PREVIEW为要绘图的静态框的ID

ScreenToClient(&rect); //将它们转化为相对于应用程序对话框的矩形

dc.MoveTo(rect.left+20,rect.top+rect.Height()/2);  //在示例框的中部画线

dc.LineTo(rect.right-20,rect.top+rect.Height()/2);

// 不为绘图消息调用CDialog::OnPaint()

}

效果如下:

ComboBox控件
你也可以根据自己的需要自己修改,以获得你想要的现实方式。