1 以下代码我是在View类中实现的:
 2 /** 利用平台SDK实现画线功能
 3     // 首先获得窗口的设备描述表
 4     HDC hdc;
 5     hdc = ::GetDC( m_hWnd );  //调用的是平台SDK的成员函数
 6     // 移动到线条的起点
 7     MoveToEx( hdc, m_ptOrigin.x, m_ptOrigin.y, NULL ); // 第四个参数是一个指向Point结构体的指针,用于保存移动前鼠标的位置坐标,这里不需要这个坐标,所以设置为NULL
 8     LineTo( hdc, point.x, point.y );
 9     ::ReleaseDC( m_hWnd, hdc );
10     CView::OnLButtonUp(nFlags, point);
11     */
12
13     /** CDC 类,利用MFC封装类实现画线功能
14     CDC* pDC = GetDC();        // 调用的是CWnd类的成员函数,View类也是从CWnd类继承的
15     pDC->MoveTo( m_ptOrigin );
16     pDC->LineTo( point );
17     ReleaseDC( pDC );
18     */
19
20     /** 利用CDC 类的派生类 CClientDC 实现画线功能, 他在构造函数中调用GetDC,在析构时调用ReleaseDC,因此不需要显示调用
21     //CClientDC dc( this );
22     CClientDC dc( GetParent() );
23     dc.MoveTo( m_ptOrigin );
24     dc.LineTo( point );
25     */
26
27     /**CWindowDC 也派生于CDC类
28     //CWindowDC dc( this );                 // 在客户区绘图
29     //CWindowDC dc( GetParent() );         // 可以在菜单栏和工具栏上绘图
30     CWindowDC dc( GetDesktopWindow());
31     dc.MoveTo( m_ptOrigin );
32     dc.LineTo( point );
33     */
34
35     /** 画笔的使用
36     //CPen pen( PS_SOLID, 2, RGB(255, 0, 0) );
37     //CPen pen( PS_DASH, 1, RGB(255, 0, 0) );  //线宽必须<=1才生效
38     CPen pen( PS_DOT, 1, RGB(255, 0, 0) );
39     CClientDC dc( this );
40     CPen* pOldPen = dc.SelectObject( &pen );
41     dc.MoveTo( m_ptOrigin );
42     dc.LineTo( point );
43     dc.SelectObject( pOldPen );
44     */
45
46     /** 颜色画刷的使用
47     CBrush brush( RGB(255, 0, 0) );
48     CClientDC dc( this );
49     dc.FillRect( CRect( m_ptOrigin, point), &brush );
50     */
51
52     /** 位图画刷的使用
53     CBitmap bitmap;
54     bitmap.LoadBitmapW( IDB_BITMAP1 );
55     CBrush brush( &bitmap );
56     CClientDC dc( this );
57     dc.FillRect( CRect( m_ptOrigin, point ), &brush );
58     */
59
60     /** 默认是白色画刷,会覆盖掉先前区域内图行
61     CClientDC dc( this );
62     dc.Rectangle( CRect( m_ptOrigin, point ) );  // DC 默认是白色画刷,前边画的图像会把后边的覆盖掉,所以要想办法用透明画刷
63     */
64
65     /** 使用透明画刷
66     CClientDC dc( this );
67     // 创建一个空画刷,FromHandle方法可以将画刷句柄转换成画刷对象
68     // GetStockObject方法返回的是一个HGDIOBJECT句柄,所以要将其强制类型转化成HBRUSH类型
69     CBrush* pBrush = CBrush::FromHandle( (HBRUSH)GetStockObject( NULL_BRUSH));
70     CBrush* pOldBrush = dc.SelectObject( pBrush );
71     dc.Rectangle( CRect( m_ptOrigin, point ) );
72     dc.SelectObject( pOldBrush );
73     */

MFC中设备描述表dc的使用相关推荐

  1. MFC中设备描述符DC,CDC,HDC,CClientDC总结

    实际这篇文章是转的,,呵呵改成原创以便推到首页.. CClientDC 类CClientDC派生于CDC,在构造时调用了Windows函数GetDC,在析构时调用了ReleaseDC.这意味着和CCl ...

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

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

  3. MFC中的DC,CDC和HDC

    设备描述表(DC)是Windows中的一种数据结构,它包含GDI需要的所有关于显示界面情况的描述字段,包括相连的物理设备和各种各样的状态信息. 图形显示功能是由显卡来完成的,你想要利用显卡的图形显示功 ...

  4. Windows 中GDI、设备描述表和位图

    在Windows中,所有的图形和图像显示操作都是通过GDI(Graphic Device Interface)模块完成,,而GDI的显示都是由设备描述表(Context Device,简称DC)来完成 ...

  5. MFC中 dc.DrawText()与dc.TextOut()从功能上讲有什么区别?

    这根本是两个函数,dc.TextOut(x,y,str)调用的是MFC中CClientDC类的成员函数TextOut,而TextOut(dc,x,y,length)是WIN32的API函数,其中的dc ...

  6. MFC中的GDI绘图

    MFC中的GDI绘图 目录(?)[+] 什么是GDI 什么是DC MFC中与GDI有关的类 获取设备环境 设置坐标映射 创建绘图工具并选入DC 调用DC绘图函数绘图 三坐标映射实例 一.关于GDI的基 ...

  7. 在vc或mfc中显示IplImage的方法

    平常使用Open CV时总是跳出一个个窗口,很难将项目进行系统集成,特别是在MFC等Windows环境中加载显示Open CV中的IplImage图像: /********************** ...

  8. MFC中CDC *PDC hDC 等等及Wnd的区别

    HDC是WINDOWS的一种数据类型,是设备描述句柄. CDC是MFC里的一个类,它封装了几乎所有的关于HDC的操作. pDC一般用作CDC类的指针. 也可以这样说,HDC定义的变量指向一块内存,这内 ...

  9. mfc中字体设置详解

    为了能选用不同的字体和大小来输出文本串,须使用作为GDI对象的 CFont类.Windows和常用的字处理软件(如Word).绘图软件(如CorelDraw)等应用软件会提供多种与设备无关的字体,主要 ...

最新文章

  1. 人眼是具有插帧能力的
  2. c++精确到小数点后两位_高考试卷的小数点是怎么算入总分的?
  3. 重庆python就业工资待遇-重庆Python人工智能编程
  4. 骁龙660是32位还是64位_骁龙660是32位还是64位_都是搭载骁龙660处理器 这三款国产手机如何选...
  5. 状态反射在体育运动中的作用_建筑用热反射隔热涂料的研究进展
  6. exe打包工具哪个最好_为你的 Python 程序写个启动工具箱
  7. tomcat启动java项目_Java web项目启动Tomcat报错解决方案
  8. Maven自学日志01---安装
  9. logback配置文件详解
  10. java struts2下载文件_java struts2入门学习---文件下载的二种方式
  11. Vijos P1740聪明的质检员
  12. struts1和struts2的区别
  13. 淘宝CPC、CPM和CPS分别是什么,有什么区别?
  14. 沈颖刚:生物柴油或是高原柴油货车污染治理有效途径
  15. 系统启动故障恢复控制台应用实例
  16. 我的程序员转行过程,聊聊程序员的职业出路在哪里?
  17. java短信登录_JAVA短信验证登录
  18. 艾伦·麦席森·图灵的传奇人生
  19. Java程序员从携程、美团、阿里面试回来,这些面经分享给大家
  20. IE浏览器通过JS提交表单时报错拒绝访问

热门文章

  1. perl 连接mysql_perl如何连接mysql数据库?
  2. linux mysql 操作命令_linux的mysql操作命令
  3. C++ ——统一初始化
  4. android 流失布局,Android使用RecyclerView实现流式布局的注意事项
  5. html分页自动加载数据库,AngularJS实现分页显示数据库信息
  6. mamp python mysql_Python,MySQL,MAMP怎么做?
  7. 【java 性能优化实战】3 工具实践:如何获取代码性能数据?
  8. kubernetes资源对象之security context
  9. 关于微型计算机的ppt,微型计算机基础知识.ppt
  10. 【PHPWord】文本输入