Sollyu

  • 捐赠
  • 关于
  1. 首页
  2. 原创文章
  3. 正文

C++学习笔记六

2014年5月28日 3883点热度 0人点赞 0条评论

为类添加的成员变量要先初始化,类的静态成员变量要在类外进行初始化

说明

要在窗口中输出文字或者显示图形都要用到窗口的设备描述表(Device Context,简称DC)。在Windows平台下,所有的图形操作都是利用DC来完成的。

设备描述表屏蔽了用户与底层硬件之间的联系,由它负责与底层互动

利用各种类或者函数实现画线的方法

  • 利用SDK全局函数实现画线
    要有获得DC和释放DC的语句,并且调用的全局函数前加::(域作用标识符)

  • 利用MFC的CDC类实现画线
    CDC类封装了所有与绘图相关的操作,内部提供一个数据成员m_hDC,来保存与CDC相关的DC句柄。
    也要利用CWnd类的成员函数GetDC和ReleaseDC来获得和释放设备描述表。

  • 利用MFC的CClientDC类实现画线
    CClientDC派生自CDC类,在构造时就调用了GetDC函数,在析构时就调用了ReleaseDC函数。因此不再需要显式的调用两个函数了。
    CClientDC的对象在构造时,需要传递一个CWnd指针参数。

窗口的位置关系

整个程序 窗口就是框架窗口,工具栏以下区域是视类窗口。

视类窗口只有客户区(即它本身),框架窗口有客户区(菜单栏以下部分)还有非客户区(标题栏和菜单栏)

利用MFC的CWindowDC实现画线

基本与利用CClientDC实现画线的程序一样,只是画图的区域除了客户区还有非客户区。

画线的进阶操作

  • 绘制彩色线条
    先定义一个特定颜色的画笔,将此画笔选入设备描述表,利用设备描述表画线。CPen可以用来创建画笔对象。
    一种构造函数是CPen(int nPenstyle,int nWidth,COLORREF crColor),分别指定线型,线宽和颜色。
    在程序中,当构造一个GDI对象后,并不会立即生效,必须选入设备描述表,它才以生效 。SelectObject函数。
    > GDI是图形设备接口(Graphics Device Interface, 或Graphical Device Interface)的简称,是Windows系统表征图形对象及将其传送给诸如显示器、打印机之类输出设备的标准。

  • 使用画刷绘图
    画刷对象可以由CBrush类创建。

  • 位图画刷
    画刷的构造函数CBrush(CBitmap* pBitmap)。
    创建CBbitmap对象,仅通过其构造函数还不可以,还需要初始化函数。创建插入一个资源(resource)

  • 透明画刷
    从画刷句柄到画刷对象,可以利用CBrush类的FromHandle函数来实现,这是一个静态成员函数,通过类名可以直接调用。
    静态成员函数和静态成员变量属于类本身,在类加载的时候,已经有了内存空间,可以通过类名::函数名或者类名::变量名来访问;而非静态成员函数和非静态成员变量属于对象的方法和数据,只能先产生对象 ,再由对象去引用。
    > 静态成员变量用stacic限定符标明,必须在类的定义之外对它进行初始化。

  • 绘制连续线条
    绘制连续线条的话需要考虑下一段线的起点是现在的终点,需要不断的变换。

  • 绘制扇形效果的线条
    保存鼠标每一个移动的点,以最开始的原点到现在的点会绘制一条线;从现在的点到上一个鼠标的点也会绘制一条线,这样的扇形就有了边线。
    绘图模式需要试验。

图片

C++学习笔记四

本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: VC++ 画线 笔记
最后更新:2014年5月28日

sollyu

这个人很懒,什么都没留下

点赞
< 上一篇
下一篇 >

COPYRIGHT © 2021 sollyu.com. ALL RIGHTS RESERVED.

THEME KRATOS MADE BY VTROIS

苏ICP备15007531号