为了屏蔽硬件输出设备的多样性,Windows系统为程序员提供了一个可以操作这些硬件却与硬件无关的接口,于是就可以把对不同设备的操作方法统一起来。
CPaintDC,CClientDC,CWindowDC,CMetaFileDC
CPaintDC: 封装(BeginPaint)和(EndPaint)两个API的调用.
CClientDC: 处理显示器描述表的相关的窗体客户区域。
CWindowDC: 处理显示器描述表相关的整个窗体区域,包括了框架和控 件(子窗体)。
CMetaFileDC: 与元文件相关的设备描述表关联。
使用CDC的成员函数SelectObject把绘图工具载入设备描述环境。
首先使用语句CDC*pDC创建一个CDC类对象的指针,然后就可以用下面格式的语句来调用CDC类提供的各种方法了:pDC->方法名(参数);
void CMFCexp4_1View::OnDraw(CDC* pDC)
{
CMFCexp4_1Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
pDC->TextOut(50,50,"我是被输出的字符串"); //输出字符串的语句
}
编写一个单文档应用程序,程序启动后在用户区显示一个方形,当用鼠标左键单击用户区后,该方形会变成圆形,如果再单击则又变回方形
程序设计思想:
设置一个开关变量m_bKey ,当其值为false 时,在OnDraw函数里绘制一个矩形,当其值为true时,在OnDraw函数里绘制一个圆形;
再定义一个成员变量m_brectRec存储矩形和圆形的尺寸
代码如下:
1.在视图View类里声明变量
public:
bool m_bKey;
3.在视图类的OnLButtonDown函数中添加代码:
void CMFCexp4_5View::OnLButtonDown(UINT nFlags, CPoint point)
{
if(m_bKey)
m_bKey = false;
else
m_bKey = true;
Invalidate();
CView::OnLButtonDown(nFlags, point);
}
4.在视图类的OnDraw函数中添加代码:
void CMFCexp4_5View::OnDraw(CDC* pDC)
{
CMFCexp4_5Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
CRect m_brectRec(100,100,400,400);
if(m_bKey)
pDC->Ellipse(&m_brectRec);
else
pDC->Rectangle(&m_brectRec);
}
原文链接:https://blog.csdn.net/sky_fighting/article/details/9159259.
public:
int red , green , blue;
void CMFCexp4_5View::OnDraw(CDC* pDC)
{
CMFCexp4_5Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
CRect m_brectRec(100,100,400,400);
int clr = RGB( red , green , blue );
CBrush newBrush( clr );
CBrush *oldBrush = pDC->SelectObject( &newBrush );
pDC->Ellipse(m_brectRec);
pDC->SelectObject( oldBrush );
}
void CMFCexp4_5View::OnLButtonDown(UINT nFlags, CPoint point)
{
red += 50%300;
green += 20%300;
blue += 10%300;
Invalidate();
CView::OnLButtonDown(nFlags, point);
}
参考文章:https://blog.csdn.net/sky_fighting/article/details/9159859