MFC 图形设计

来源:互联网 发布:linux如何恢复文件夹 编辑:程序博客网 时间:2024/04/29 22:12

设备描述表

是Windows定义的数据结构,包含的信息允许windows将输出请求转换为对正在使用的特定物理输出设备的动作。输出动作采用设备无关性GDI调用形式,将图像绘制在任何显示器或者其他输出设备上。

1、使用BeginPaint(hwnd,&ps)来获取设备描述表句柄,必须使用EndPaint(hwnd,&ps)来释放

2、使用GetDC()来获得,必须使用ReleaseDC()来释放

两者区别是,BeginPaint只用于由WM_PAINT消息驱动的图形刷新,在获取设备环境后,操作区域为无效区域。最后必须有EndPaint来释放。而GetDC()使用较广泛,获取设备环境后,操作区位整个客户区,最后必须由ReleaseDC()来释放。

因为设备描述表在内存中创建,而内存地址是经常变化的,所以一个设备描述表句柄不是直接执行设备描述表对象,而是指向另外一个跟踪设备描述表地址指针。

元文件和路径

元文件和路径分别是Windows和MFC提供的保存一副图像供以后使用的方法。

元文件是一个结构的集合,用与设备无关的格式来存储图像,实际上是捕获任何绘图到一个设备描述表中,以便以后能重放或者存储到磁盘上。位图一旦装载到内存中,就和设备无关,因此可以认为元文件在内存中是设备无关的位图。一旦应用程序将输出结果记录到一个元文件中,那么该元文件就可以被使用任意多次,并且输出结果可以被发送到任意多个物理设备上。缺点是,他比位图的绘图速度慢。因此,如果一个应用程序要求有较快的绘图速度,而不需要具有设备无关性,则应该用位图代替元文件。

路径,像元文件一样捕获绘图函数,但路径能绘制修改版形状,也可以填充一个路径图像或把他变成一个剪裁区域。



void CUsePenView::OnLButtonUp(UINT nFlags, CPoint point){// TODO: 在此添加消息处理程序代码和/或调用默认值CDC* pcdc = (CDC*)GetDC();pcdc->MoveTo(m_point);pcdc->LineTo(point);//CClinetDC在内部构造函数中封装了GetDC,在析构函数中封装了ReleaseDC,//也就是用CClientDC可以不用显示地调用GetDC和ReleaseDC//CClientDC ccdc(this);//ccdc.MoveTo(m_point);//ccdc.LineTo(point);//CWindowDC的特点是,由他生成的对象可以访问整个窗口区域,包括框架窗口的客户区和非客户区//CWindowDC cwdc(this);//在框架窗口中绘图,需要获得父窗口指针cwdc(GetParent())//cwdc.MoveTo(m_point);//cwdc.LineTo(point);CView::OnLButtonUp(nFlags, point);}


原创粉丝点击