`
wo_deqing
  • 浏览: 60456 次
文章分类
社区版块
存档分类
最新评论

DC Windows绘图

 
阅读更多

Windows绘图方式

1.<wbr><wbr><strong>HDChdc;<br><wbr><wbr><wbr><wbr>hdc = ::GetDC(m_hWnd);<br><wbr><wbr><wbr><wbr>MoveToEx(hdc , m_ptOrigin.x ,m_ptOrigin.y,NULL);<br><wbr><wbr><wbr><wbr>LineTo(hdc,point.x , point.y);<br><wbr><wbr><wbr><wbr>::ReleaseDC(m_hWnd,hdc);</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></strong></wbr></wbr>

通过获取hdc来取得devicecontext,GetDC是系统函数,使用过DC以后,要释放DC。

图形对象包括画线的笔,绘图和填充用的画刷,可以复制的位图或者屏幕的卷动,用于可用颜色定义的调色板,还有进行其他操作的区域,绘图的路径等等。一个DC的绘图对象包括:Bitmap、Brush、Palette、Font、Path、Pen、Region。DC的类型包括:显示器、打印机、存储器和数据的索引。DC的通俗解释 以及 SelectObject()& DeleteObject() 在GDI中,DC(Devicecontext)是一个非常重要的概念。在各种资料中,将DC翻译为设备描述表,也有的书将DC翻译为设备上下文。

<wbr></wbr>

2.<wbr><wbr> CDC *pDC=<wbr> GetDC();<br><wbr><wbr><wbr><wbr>pDC-&gt;MoveTo(m_ptOrigin);<br><wbr><wbr><wbr><wbr>pDC-&gt;LineTo(point);<br><wbr><wbr><wbr><wbr>ReleaseDC(pDC);<br></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

CDC是MFC提供的绘图类,类中定义了很多函数。

The CDC class defines a class of device-context objects.The CDC object provides member functions for working with adevice context, such as a display or printer, as well as membersfor working with a display context associated with the client areaof a window.

<wbr></wbr>

3.<wbr> CClientDC dc(GetParent());<br><wbr><wbr><wbr><wbr>dc.MoveTo(m_ptOrigin.x , m_ptOrigin.y);<br><wbr><wbr><wbr><wbr>dc.LineTo(point);</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

The CClientDC class isderived from CDC and takes care of calling the WindowsfunctionsGetDC at construction time andReleaseDC at destructiontime. This means that the device context associated with aCClientDC object is the client area of awindow.

<wbr></wbr>

4.<wbr><wbr><wbr>CWindowDCdc(GetDesktopWindow());<br><wbr><wbr><wbr><wbr>dc.MoveTo(m_ptOrigin);<br><wbr><wbr><wbr><wbr>dc.LineTo(point);</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

TheCWindowDCclass is derived fromCDC. It calls the WindowsfunctionsGetWindowDCat construction time andReleaseDCat destructiontime. This means that aCWindowDCobject accesses the entire screenarea of aCWnd(both client and nonclient areas).

GetDesktopWindow();获取桌面句柄。

<wbr></wbr>

5.<wbr><wbr>CPen pen(PS_DASH, 1 , RGB(255,0,0));<br><wbr><wbr><wbr><wbr>CClientDC dc(this);<br><wbr><wbr><wbr><wbr>CPen *pOldPen = dc.SelectObject(&amp;pen);<br><wbr><wbr><wbr><wbr>dc.MoveTo(m_ptOrigin.x , m_ptOrigin.y);<br><wbr><wbr><wbr><wbr>dc.LineTo(point);</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr>dc.SelectObject(pOldPen);</wbr></wbr></wbr></wbr>

创建一个新类CPen,来设定画笔格式。dc.SelectObject();将一个画笔选入DC。

CDC::SelectObject<wbr></wbr>

CPen* SelectObject( CPen* pPen );

CBrush* SelectObject( CBrush* pBrush );

virtual CFont* SelectObject( CFont* pFont );

CBitmap* SelectObject( CBitmap* pBitmap );

int SelectObject( CRgn* pRgn );

返回值为 设定之前的object的指针类型。

<wbr></wbr>

6.<wbr><wbr><wbr>CBrushbrush(RGB(255,0,0));<br><wbr><wbr><wbr><wbr>CClientDC dc(this);<br><wbr><wbr><wbr><wbr>dc.FillRect(CRect(m_ptOrigin , point) ,&amp;brush);</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

创建一个画刷,初始化格式为:
CBrush( );

CBrush( COLORREF crColor );
throw( CResourceException );

CBrush( int nIndex, COLORREF crColor );
throw( CResourceException );

CBrush( CBitmap* pBitmap );
throw( CResourceException );

<wbr></wbr>

void FillRect( LPCRECT lpRect, CBrush* pBrush);用pBrush来填充 Rect区域。

<wbr></wbr>

7.<wbr><wbr><wbr>CBitmapbitmap;<br><wbr><wbr><wbr><wbr>bitmap.LoadBitmap(IDB_BITMAP1);<br><wbr><wbr><wbr><wbr>CBrush brush(&amp;bitmap);<br><wbr><wbr><wbr><wbr>CClientDC dc(this);<br><wbr><wbr><wbr><wbr>dc.FillRect(CRect(m_ptOrigin , point) ,&amp;brush);</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

用位图来填充画刷,首先要初始化一个Bitmap类,通过LoadBitmap函数来导入位图。


8.<wbr><wbr> CClientDCdc(this);<br><wbr><wbr><wbr><wbr>dc.Rectangle(CRect(m_ptOrigin,point));</wbr></wbr></wbr></wbr></wbr></wbr>

画一个矩形区域,图形会覆盖。


9.<wbr><strong>CClientDC dc(this);<br><wbr><wbr>CBrush *pBrush =CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH));<br><wbr><wbr> CBrush *pOldBrush =dc.SelectObject(pBrush);<br><wbr><wbr>dc.Rectangle(CRect(m_ptOrigin,point));<br><wbr><wbr>dc.SelectObject(pOldBrush);</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></strong></wbr>

透明画刷的使用。

FromHandle是CBrush类得静态函数,static CBrush* PASCALFromHandle( HBRUSH hBrush );Returns a pointer to a CBrushobject when given a handle to a Windows HBRUSH object.

The GetStockObject function retrieves a handle to one ofthe stock pens, brushes, fonts, or palettes.

<wbr></wbr>

<wbr></wbr>

静态成员函数,在类初始化过程中便产生。没有初始化对象,通过::引用即可使用。

但是,内部变量如果不是静态的,且在没有初始化时,使用静态成员函数,函数中使用了这些变量,会发生错误,因为这些变量没有初始化产生。

非静态成员函数可以使用静态成员函数。

分享到:
评论

相关推荐

    windows 绘图函数

    该文档描述了在windows开发中绘图的部分,主要是窗口的重绘,其中还描述了相关窗口的组成部分,如非客户去,窗口背景,窗口坐标系统等等

    MFC GDI绘图基础

    Windows绘图的实质就是利用Windows提供的图形设备接口GDI(Graphics Device Interface)将图形绘制在显示器上。 在Windows操作系统中,动态链接库C:/WINDOWS/system32/gdi32.dll(GDI Client DLL)中定义了GDI函数,...

    Windows+API+程序设计参考大全光盘

    第3章 设备上下文(DC) 第4章 绘图函数 第5章 位图和图标 .. 第6章 菜单处理 第7章 内存处理 第8章 文件处理 第9章 处理文本和字体 第10章 硬件和系统 第11章 Windows消息 第12章 调试和错误处理 第13章 远程...

    WindowsAPI参考手册

    Microsoft Win32 API 函数按照功能划分为窗口处理、设备上下文——DC 、绘图函数、 位图和图标、菜单处理、文件处理、同步、处理文本和字体、硬件和系统、Windows 消息、 进程和线程。 本书按功能对Win32 API 函数...

    WindowsApI函数参考手册(7)

    内容主要为: &lt;br&gt;第二章 窗口处理 第三章 设备上下文—DC 第四章 绘图函数 第五章 位图和图标 第六章 菜单处理 第七章 文件处理 第八章 同步 第九章 处理文本和字体 第十章 硬件和系统...

    Windows程序设计笔记

    3、掌握在WM_PAINT消息和在其他消息中得到DC的方法 4、掌握的常见的绘图函数的使用、画笔、画刷的使用 5、掌握WM_CREATE、WM_COMMAND、鼠标消息的处理方法 6、掌握菜单的使用(菜单消息处理) 7、掌握文件存储(设计...

    windows api函数参考手册代码原版.zip

    第三章 设备上下文—DC 第四章 绘图函数 第五章 位图和图标 第六章 菜单处理 第七章 文件处理 第八章 同步 第九章 处理文本和字体 第十章 硬件和系统 第十一章 Windows 消息 第十二章 进程和线程 由于书中示例比较...

    Windows API 程序设计参考大全

    包含大量Windwos下各个方面的源码 Windows套接字 远程访问服务 调试和错误处理 Windows消息 硬件和系统 处理文本和字体 文件处理 内存处理 菜单处理 位图和图标 绘图函数 设备上下文(DC) 2窗口处理

    Windows环境下32位汇编语言程序设计_随书光盘

    一些常见的绘图操作 Chapter08\CommDlg ;使用通用对话框 Chapter09\Toolbar ;使用工具栏 Chapter09\StatusBar ;使用状态栏 Chapter09\Richedit ;使用丰富编辑控件 Chapter09\Wordpad ;一个完整的文本编辑器例子 ...

    Windows环境下32位汇编语言程序设计(最新琢石成器版)附属光盘

    一些常见的绘图操作 Chapter08\CommDlg ;使用通用对话框 Chapter09\Toolbar ;使用工具栏 Chapter09\StatusBar ;使用状态栏 Chapter09\Richedit ;使用丰富编辑控件 Chapter09\Wordpad ;一个完整的文本编辑器例子...

    WindowsApI函数参考手册(8)

    内容主要为: &lt;br&gt;第二章 窗口处理 第三章 设备上下文—DC 第四章 绘图函数 第五章 位图和图标 第六章 菜单处理 第七章 文件处理 第八章 同步 第九章 处理文本和字体 第十章 硬件和系统...

    WindowsApI函数参考手册(6)

    内容主要为: &lt;br&gt;第二章 窗口处理 第三章 设备上下文—DC 第四章 绘图函数 第五章 位图和图标 第六章 菜单处理 第七章 文件处理 第八章 同步 第九章 处理文本和字体 第十章 硬件和系统...

    WindowsApI函数参考手册(4)

    内容主要为: &lt;br&gt;第二章 窗口处理 第三章 设备上下文—DC 第四章 绘图函数 第五章 位图和图标 第六章 菜单处理 第七章 文件处理 第八章 同步 第九章 处理文本和字体 第十章 硬件和系统...

    VC++ MFC绘图类实战笔记源代码

    摘要:VC/C++源码,系统相关,MFC,绘图 1 添加数据类  CShapeBase  2 添加绘制图形的命令  3 添加线色/填充色的命令  4 鼠标支持  5 多个图的支持  6 选择  7 橡皮条绘图  int nOld = dc.SetROP2( R2_...

    WindowsApI函数参考手册(2)

    内容主要为: &lt;br&gt;第二章 窗口处理 第三章 设备上下文—DC 第四章 绘图函数 第五章 位图和图标 第六章 菜单处理 第七章 文件处理 第八章 同步 第九章 处理文本和字体 第十章 硬件和系统...

    GDI+的资料和例子

    Windows 绘图原理,利用内存DC提高GDI绘图质量,双缓冲都是VC++6.0的资料,有例子和详细代码。

    WindowsApI函数参考手册(3)

    内容主要为: &lt;br&gt;第二章 窗口处理 第三章 设备上下文—DC 第四章 绘图函数 第五章 位图和图标 第六章 菜单处理 第七章 文件处理 第八章 同步 第九章 处理文本和字体 第十章 硬件和系统...

    类似画图板的小程序-windows

    最近做了一个类似Windows画图板的小程序,拿来和大家分享一下。功能和界面全部模仿于Windows自带的画图板,界面如截图。功能主要有: 手绘线、简单图形、文字输入、图块拖放、重复撤销、画面缩放、打开保存图片文件...

Global site tag (gtag.js) - Google Analytics