第二章 在窗口中绘图

2.1Windows GDI

Windows中负责图形输出的是Graphics Device Interface(图形设备接口),简称GDI。

CDC::DrawText :将文本输出到窗口。

2.1.1MFC设备描述表类

CWnd::GetDC :在MFC应用程序中获取设备描述表的指针,返回指向表示Windows设备描述表的CDC对象的指针。

CWnd::ReleaseDC :CWnd::GetDC释放获取的设备描述表指针。

CWnd::GetWindowDC :获取允许在窗口内任一地方画图的设备描述表DC指针(与只允许在窗口客户区画图的设备描述表CDC指针不同)。

例子:

CDC* pDC = GetDC();

//Do some drawing

ReleaseDC(pDC);


若同样的程序代码出现在OnPaint处理程序中,则需用CWnd::BeginPaint和CWnd::EndPaint分别代替GetDC和ReleaseDC,以保证合理的处理WM_PAINT消息:

PAINTSTRUCT ps;

CDC* pDC = BeginPaint(&ps);

//Do some drawing

EndPaint(&ps);


专门用途的设备描述表类

CPaintDC:用于在窗口客户区画图(仅限于OnPaint处理程序)

CClientDC:用于在窗口客户区画图(OnPaint外的任何处理程序)

CWindowDC:用于在窗口内任一地方画图,包括非客户区

CMetaFileDC:用于向GDI元文件画图


CPaintDC类

MFC的CPaintDC类响应WM_PAINT消息,要调用BeginPaint和EndPaint。


CClientDC类和CWindowDC类

MoveTo 和 LineTo是CClientDC从CDC继承来的画线函数。

如果想在非客户区作图,可以借助OnNcPaint处理程序捕获WM_NCPAINT消息,确定非客户区绘图时间。

程序需要全屏幕的访问权限,可以创建CClientDC和CWindowDC对象,并给其构造函数传送一个NULL。语句

CClientDC dc(NULL);

dc.Ellipse(0,0,100,100);//将在屏幕左上角画一个圆。

屏幕截取程序经常使用全屏访问整个屏幕。


2.1.2设备描述表属性

画笔(Pen)
画刷(Brush)
字体(Font)
位图(Bitmap)
调色板(Palette)
区域(Region)

dc.SetBkMode(TRANSPARENT);//如果想忽略背景颜色,可将背景模式设置为透明。
dc.SelectObject(pPen);
dc.SelectObject(pBrush);

CDC::SaveDC//保存状态
CDC::RestoreDC//恢复
















  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值