设备上下文

来源:互联网 发布:东风天锦配件淘宝 编辑:程序博客网 时间:2024/05/15 14:14

设备上下文,又叫作设备描述表(Device Context),简称DC。

   当一个应用程序使用GDI函数时,必须先装入特定的设备驱动程序,然后为绘制窗口准备设备描述表,比如指定线的宽度和颜色、刷子的样式和颜色、字体、剪裁区域等等。不像其他Win32结构,设备描述表不能被直接访问,只能通过系列Win32函数来间接地操作。

   如同Windows“窗口类”一样,设备描述表也是一种Windows数据结构,用来描述绘制窗口所需要的信息。它定义了一个坐标映射模式一组GDI图形对象及其属性。这些GDI对象包括用于画线的笔,绘图、填图的刷子,位图,调色板,剪裁区域,及路径(Path)。



 蓝色背景转自http://blog.sina.com.cn/s/blog_5dbf4a610100ofzh.html



1.设备描述表

设备描述表是一个包含设备信息的结构体,(物理设备如显示器,打印机),MFC中关于图形操作都需要DC来完成.

2获取DC 有两种方式:

(1)在WM_PAINT消息时,使用BeginPaint  EndPaint;

eg: HDC hdc;

    PAINTSTRUCT ps;(用来接收绘制的信息)

    hdc=BeginPaint(hwnd,&ps);

    TextOut(hdc,0,0,"hello",strlen("hello"));

    EndPaint(hwnd,&ps);

  2.HDC hdc;

    hdc=GetDc(hwnd);

    TextOut(hdc,0,0,"hello",strlen("hello"));

    ReleaseDC(hwnd,hdc);

在其他的场合,都是使用第二种方法来调用DC.

具有特殊类型的DC



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

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

CClientDC dc(this);

dc.MoveTo(m_ptOrigin);

dc.LineTo(m_ptEnd);

CWindowDC

用于在整个窗口.下面是以桌面为例,应该明确桌面也是一个窗口.

CWindowDC dc(GetDesktopWindow());

dc.MoveTo(m_ptOrigin);

dc.LineTo(m_ptEnd);


 

CMetaFileDC用于向GDI元文件绘图

               CMetaFileDC dc(this);

                dc.TextOut("hello");

这个就保存在元文件中,等待事件然后播放元文件.(如窗口重绘)

3设备描述表相关的工具有:bitmap,font,brush,palette,pen

使用原则:首先创建一个特定的对象,然后将其选入设备描述表中,接下来就一一介绍如何使用.

 

CClientDC dc(this);

CPen pen(类型,线宽,颜色);(定义一个画笔)

CBrush brush(颜色);(定义一个画刷,主要是填充作用)

CBitmap bitmap;(定义一个位图)

bitmap.LoadBitmap(IDB_BITMAP1);

CFont font;(定义一种字体)

font.CreatePointFont(大小,字体名称,NULL);(NULL 表示使用屏幕设备描述表来完成这中转换)

将他们都选入设备描述表中,并且保存以前的.运用SelectObject()函数,可以将其选入设备描述表,并且返回先前被选对象的指针.

CPen *poldpen=dc.SelectObject(&pen);

使用过程

dc.SelectObject(poldpen);(使用结束后,将其恢复到原来的状态)

CBrush *poldbursh=dc.SelectObject(&bursh);

dc.FillRect(CRect(100,100,200,200),&brush);

dc.SelectObject(poldbrush);


红色背景转自http://blog.sina.com.cn/s/blog_50ed869d01009995.html


0 0
原创粉丝点击