// DrawDlg.h : 头文件
//
#pragma once
// CDrawDlg 对话框
class CDrawDlg : public CDialog
{
//忽略以上代码
DECLARE_MESSAGE_MAP()
public:
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
private:
CPoint m_ptOrigin;
CPoint m_ptOld;
BOOL m_bDraw;
afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
afx_msg void OnMouseMove(UINT nFlags, CPoint point);
};
CDrawDlg::CDrawDlg(CWnd* pParent /*=NULL*/)
: CDialog(CDrawDlg::IDD, pParent)
{
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
m_ptOrigin = 0;
m_ptOld = 0;
m_bDraw = FALSE;
}
void CDrawDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
m_ptOrigin = m_ptOld = point;
m_bDraw = TRUE;
CDialog::OnLButtonDown(nFlags, point);
}
void CDrawDlg::OnLButtonUp(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
/*************画线段********************/
/*HDC hDc;
hDc = ::GetDC(m_hWnd);
MoveToEx(hDc,m_ptOrigin.x,m_ptOrigin.y,NULL);
LineTo(hDc,point.x,point.y);
::ReleaseDC(m_hWnd,hDc);*/
/*CDC *pDC = GetDC();
pDC->MoveTo(m_ptOrigin);
pDC->LineTo(point);
ReleaseDC(pDC);*/
/*CClientDC dc(this);
dc.MoveTo(m_ptOrigin);
dc.LineTo(point);*/
/*CClientDC dc(GetParent());
dc.MoveTo(m_ptOrigin);
dc.LineTo(point);*/
/*CWindowDC dc(this);
dc.MoveTo(m_ptOrigin);
dc.LineTo(point);*/
/*CWindowDC dc(GetParent());
dc.MoveTo(m_ptOrigin);
dc.LineTo(point);*/
/*CPen pen(PS_SOLID,5,RGB(255,0,0));
CClientDC dc(this);
CPen *pOldPen = dc.SelectObject(&pen);
dc.MoveTo(m_ptOrigin);
dc.LineTo(point);
dc.SelectObject(pOldPen);*/
/*************矩形填充********************/
颜色画刷
//CBrush brush(RGB(255,0,0));
//CClientDC dc(this);
//dc.FillRect(CRect(m_ptOrigin,point),&brush);
位图画刷
//CBitmap bitmap;
//bitmap.LoadBitmap(IDB_BITMAP1);
//CBrush brush(&bitmap);
//CClientDC dc(this);
//dc.FillRect(CRect(m_ptOrigin,point),&brush);
空白画刷
//CClientDC dc(this);
//CBrush *pBrush = CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH));
//CBrush *pOldBrush = dc.SelectObject(pBrush);
//dc.Rectangle(CRect(m_ptOrigin,point));
//dc.SelectObject(pOldBrush);
m_bDraw = FALSE;
CDialog::OnLButtonUp(nFlags, point);
}
void CDrawDlg::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
/*************画连续线********************/
/*CPen pen(PS_SOLID,2,RGB(255,0,0));
CClientDC dc(this);
CPen *pOldPen = dc.SelectObject(&pen);
if(TRUE == m_bDraw)
{
dc.MoveTo(m_ptOrigin);
dc.LineTo(point);
m_ptOrigin = point;
}
dc.SelectObject(pOldPen);*/
/*************画扇形********************/
CPen pen(PS_SOLID,1,RGB(255,0,0));
CClientDC dc(this);
CPen *pOldPen = dc.SelectObject(&pen);
if(TRUE == m_bDraw)
{
dc.MoveTo(m_ptOrigin);
dc.LineTo(point);
dc.MoveTo(m_ptOld);
dc.LineTo(point);
m_ptOld = point;
}
dc.SelectObject(pOldPen);
CDialog::OnMouseMove(nFlags, point);
}