以下代码我是在View类中实现的:
/** 利用平台SDK实现画线功能
// 首先获得窗口的设备描述表
HDC hdc;
hdc = ::GetDC( m_hWnd ); //调用的是平台SDK的成员函数
// 移动到线条的起点
MoveToEx( hdc, m_ptOrigin.x, m_ptOrigin.y, NULL ); // 第四个参数是一个指向Point结构体的指针,用于保存移动前鼠标的位置坐标,这里不需要这个坐标,所以设置为NULL
LineTo( hdc, point.x, point.y );
::ReleaseDC( m_hWnd, hdc );
CView::OnLButtonUp(nFlags, point);
*/ /** CDC 类,利用MFC封装类实现画线功能
CDC* pDC = GetDC(); // 调用的是CWnd类的成员函数,View类也是从CWnd类继承的
pDC->MoveTo( m_ptOrigin );
pDC->LineTo( point );
ReleaseDC( pDC );
*/ /** 利用CDC 类的派生类 CClientDC 实现画线功能, 他在构造函数中调用GetDC,在析构时调用ReleaseDC,因此不需要显示调用
//CClientDC dc( this );
CClientDC dc( GetParent() );
dc.MoveTo( m_ptOrigin );
dc.LineTo( point );
*/ /**CWindowDC 也派生于CDC类
//CWindowDC dc( this ); // 在客户区绘图
//CWindowDC dc( GetParent() ); // 可以在菜单栏和工具栏上绘图
CWindowDC dc( GetDesktopWindow());
dc.MoveTo( m_ptOrigin );
dc.LineTo( point );
*/ /** 画笔的使用
//CPen pen( PS_SOLID, 2, RGB(255, 0, 0) );
//CPen pen( PS_DASH, 1, RGB(255, 0, 0) ); //线宽必须<=1才生效
CPen pen( PS_DOT, 1, 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.LoadBitmapW( IDB_BITMAP1 );
CBrush brush( &bitmap );
CClientDC dc( this );
dc.FillRect( CRect( m_ptOrigin, point ), &brush );
*/ /** 默认是白色画刷,会覆盖掉先前区域内图行
CClientDC dc( this );
dc.Rectangle( CRect( m_ptOrigin, point ) ); // DC 默认是白色画刷,前边画的图像会把后边的覆盖掉,所以要想办法用透明画刷
*/ /** 使用透明画刷
CClientDC dc( this );
// 创建一个空画刷,FromHandle方法可以将画刷句柄转换成画刷对象
// GetStockObject方法返回的是一个HGDIOBJECT句柄,所以要将其强制类型转化成HBRUSH类型
CBrush* pBrush = CBrush::FromHandle( (HBRUSH)GetStockObject( NULL_BRUSH));
CBrush* pOldBrush = dc.SelectObject( pBrush );
dc.Rectangle( CRect( m_ptOrigin, point ) );
dc.SelectObject( pOldBrush );
*/

MFC中设备描述表dc的使用的更多相关文章

  1. MFC中的各种DC区别

    转载自:xntop的<区别MFC中的CClientDC.CWindowDC.CPaintDC.CMetaFileDC> CClientDC及其子类 1. CClientDC类只能在客户区绘 ...

  2. MFC中属性表单和向导对话框的使用

    每次在使用MFC创建一个框架时,需要一步步选择自己的程序的外观,基本功能等选项,最后MFC会生成一个基本的程序框架,这个就是向导对话框:而属性表单则是另外一种对话框,表单上有多个属性页,每点击某一页, ...

  3. VC++ MFC中如何将应用程序的配置信息保存到注册表中(二)

    在上一篇中介绍了几个写入注册表数据和读取注册表数据的接口,并介绍了使用方法. 这一片教你如何使得你的应用程序在下次打开时保持上一次关闭前的状态. 在上一篇添加的代码的基础上,要添加WM_CLOSE消息 ...

  4. VS2010 MFC中制作Visual Studio风格的停靠侧栏窗口(CDockablePane里嵌套FormView表单视图)

    VS2010 MFC中制作Visual Studio风格的停靠侧栏窗口(CDockablePane里嵌套FormView表单视图) 1. 在资源窗口里新建一个FormView的Dialog,修改ID为 ...

  5. MFC中的一些视图

    本章主要介绍MFC中主要的视图类,这些继承自Cview类. 继承关系如上图所示. 滚动视图 CscrollView给Cview添加了基本的滚动功能,它包含WM_VSCROLL和WM_HSCROLL消息 ...

  6. OpenGL在MFC中的使用总结(一)——基本框架

    项目中要画3D显示的模型,于是要用到OpenGL,加上是在MFC中,并且是在MFC中的ActiveX中使用.再并且鉴于他们程序主框架的设定.常规的方法还不一定能实现.所以还是查过不少资料,在此一一总结 ...

  7. MFC中对话框类(Dialog)的应用

    转载http://hi.baidu.com/jackywdx/item/feee8041d2c2e12310ee1e85 Windows应用程序通常是通过对话框接收用户输入.向用户输出信息,本节介绍应 ...

  8. 怎样在VS2013/MFC中使用TeeChart绘图控件

    TeeChart作为一款强大好用的绘图控件,通过它可以绘制出各式各样的图表,包括2D的,还有3D的,绘制的图表美观实用,这里主要讲述如何在VS2013/MFC中使用TeeChart控件,顺便说一下在V ...

  9. MFC中消息响应机制

    由于视类窗口始终覆盖在框架类窗口之上,因此所有操作,包括鼠标单击.鼠标移动等操作都只能由视类窗口捕获.一个MFC消息响应函数在程序中有三处相关信息:函数原型.函数实现和以及用来关联消息和消息响应函数的 ...

随机推荐

  1. Codeforces Round #371 (Div. 2) D. Searching Rectangles 交互题 二分

    D. Searching Rectangles 题目连接: http://codeforces.com/contest/714/problem/D Description Filya just lea ...

  2. ant design select 坑总结

    1.保持Option的value和select绑定的value一致,这样在select框中显示的才是Option中的节点文本label 2.labelInValue属性可以使选中项的文本label包装 ...

  3. Ubuntu下实现软路由(转)

    参考:http://www.openwrt.pro/post-292.html 个人看法: 1.实现路由在Linux下必须要用到iptables进行转发,这才是路由核心. 2.我觉得对于Linux来说 ...

  4. 使用MSTest进行单元测试

    我之前写过一篇XUNit的简介:使用Xunit来进行单元测试.Xunit在当时确实是一个最简单易用的测试框架,然而,随着发展,Xunit也变得复杂了不少,光写一个最简单的测试就要导入8个包. 如果在大 ...

  5. Cortex-M4 Core Registers

    Cortex-M4 Core Registers Goal: visualizing what happens to the Cortex-M4 core registers after reset ...

  6. STM32F4xx -- Cortex M4

    STM32F4xx official page: http://www.st.com/internet/mcu/subclass/1521.jspIntroductionFPU - Floating ...

  7. 自定义两行可左右滑动的GridView

    效果图: xml: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:an ...

  8. VS2015 Offline Help Content is now available in 10 more languages!

    https://blogs.msdn.microsoft.com/devcontentloc/2015/10/21/vs2015-offline-help-content-is-now-availab ...

  9. android图片的缓存--节约内存提高程序效率

    如今android应用占内存一个比一个大,android程序的质量亟待提高. 这里简单说说网络图片的缓存,我这边就简单的说说思路 1:网络图片,无疑须要去下载图片,我们不须要每次都去下载. 维护一张表 ...

  10. 完美.PCK文件不完全详解

    building.pck:建筑物 configs.pck:配置文件interface.pck:玩过魔兽的都晓得这个是什么~interface顾名思义·facedata.pck,人物脸型,细节.不要改, ...