vc++6.0的mfc绘图
时间: 2023-07-31 22:05:56 浏览: 182
在VC++6.0的MFC框架下,可以使用CDC类来进行绘图操作。下面是一个简单的例子:
1. 在MFC应用程序中添加一个对话框。
2. 在对话框类的头文件中添加以下代码:
```
class CMyDlg : public CDialog
{
public:
CMyDlg(CWnd* pParent = NULL);
//{{AFX_DATA(CMyDlg)
enum { IDD = IDD_MY_DIALOG };
//}}AFX_DATA
//{{AFX_VIRTUAL(CMyDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX);
//}}AFX_VIRTUAL
protected:
HICON m_hIcon;
//{{AFX_MSG(CMyDlg)
virtual BOOL OnInitDialog();
afx_msg void OnPaint();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
public:
afx_msg void OnMouseMove(UINT nFlags, CPoint point);
};
```
3. 在对话框类的实现文件中添加以下代码:
```
BOOL CMyDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// 设置图标
SetIcon(m_hIcon, TRUE); // 设置大图标
SetIcon(m_hIcon, FALSE); // 设置小图标
return TRUE;
}
void CMyDlg::OnPaint()
{
CPaintDC dc(this); // 用于绘制的设备上下文
// TODO: 在此处添加消息处理程序代码
// 不要在调用 CDialog::OnPaint() 前绘制
// 绘制一个矩形
dc.Rectangle(20, 20, 100, 100);
}
void CMyDlg::OnMouseMove(UINT nFlags, CPoint point)
{
CClientDC dc(this); // 用于绘制的设备上下文
// 绘制一个圆形
dc.Ellipse(point.x - 10, point.y - 10, point.x + 10, point.y + 10);
CDialog::OnMouseMove(nFlags, point);
}
BEGIN_MESSAGE_MAP(CMyDlg, CDialog)
//{{AFX_MSG_MAP(CMyDlg)
ON_WM_PAINT()
ON_WM_MOUSEMOVE()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
```
4. 在资源视图中添加一个按钮,双击打开对话框类的消息映射器,添加以下代码:
```
void CMyDlg::OnBnClickedButton1()
{
// 显示对话框
DoModal();
}
```
5. 编译并运行程序,点击按钮,即可看到绘图效果。
在以上例子中,通过CPaintDC和CClientDC类获取设备上下文,然后使用设备上下文对象的成员函数进行绘图操作。例如,使用Rectangle函数绘制矩形,使用Ellipse函数绘制圆形。
阅读全文