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->MoveTo(m_ptOrigin);<br><wbr><wbr><wbr><wbr>pDC->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(&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) ,&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(&bitmap);<br><wbr><wbr><wbr><wbr>CClientDC dc(this);<br><wbr><wbr><wbr><wbr>dc.FillRect(CRect(m_ptOrigin , point) ,&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编程中,"利用兼容DC保持绘图"是一个重要的技术,主要应用于用户界面的高效绘制,特别是当需要频繁更新窗口或控件时。在这个场景下,`VC++`(Visual C++)提供了强大的支持。这里我们将深入探讨如何在VC++...
Windows 绘图程序设计 本章主要介绍 Windows 绘图程序设计的相关知识,并对绘图所需要的类进行充分讲解。通过本章的学习,读者可以掌握各种图形的绘制及图像在窗口中的操作。 1. 图形设备接口(Graphics Device ...
"Windows绘图程序"这个主题,主要涉及到如何利用GDI来实现简单的图形绘制。 一、GDI基本概念 1. GDI对象:GDI提供了多种对象,如笔(Pen)、刷子(Brush)、字体(Font)和位图(Bitmap),它们是进行绘图的基础...
内存DC绘图是一种在Windows图形设备接口(GDI)中防止屏幕闪烁的常见技术,尤其在需要频繁更新或重绘用户界面元素时。屏幕闪烁是由于每次更新时,Windows系统必须先清除旧图像,再绘制新图像,这个过程在刷新率不够...
在Windows中,图形刷新是绘图操作的关键环节。当有刷新请求时,例如窗口移动、大小调整或者被其他窗口覆盖,系统会通过向应用程序的消息队列发送WM_PAINT消息来响应。应用程序接收到此消息后,需要执行刷新处理。...
实验4的焦点在于Windows平台下的绘图技术,...总之,Windows绘图涉及一系列的技术和类,它们共同构成了Windows图形用户界面的基础。熟练掌握这些知识,可以有效地在Windows环境下创建出丰富多样的图形和交互式应用。
1. **设备上下文(Device Context,DC)管理**:GDI中的所有绘图操作都与设备上下文关联,这是硬件设备的抽象。在Windows Mobile上,需要正确管理和释放这些资源。 2. **颜色和刷子(Brushes)**:用于填充图形区域...
本文将详细解释Windows绘图函数的一些核心概念和操作。 首先,窗口是Windows中用于显示输出的主要构件。窗口可以由程序创建,并拥有其特定的组成部分,包括非客户区(例如标题栏和边界)和客户区(窗口内容的显示...
当应用程序需要进行图形操作时,它会创建或获取一个与目标设备相关的DC,并通过DC的句柄来执行绘图命令。 2. **图形刷新**:在Windows中,图形刷新是确保窗口内容正确显示的关键。当窗口内容发生变化,如窗口移动、...
首先,我们需要理解MFC中的DC(Device Context,设备上下文),它是Windows操作系统中处理图形输出的基本单元。在MFC中,CDC(CDeviceContext)类是DC的封装,用于控制和管理绘图操作。通过CDC对象,我们可以设置...
《Windows的图形设备接口及Windows绘图》 Windows图形设备接口(GDI)是Windows操作系统中的核心组件,专为实现设备无关的图形设计而设计。这意味着开发者在编程时无需关心具体的硬件设备,因为GDI会自动处理不同...
在本主题“用DC绘图鼠标拖动画圆”中,我们将深入探讨如何利用DirectDraw(DC)在Windows环境中结合OpenGL来实现一个动态的画圆功能,通过鼠标拖动来控制圆形的绘制。 首先,了解DirectDraw(DC)。DirectDraw是...
在Windows中,DC用于管理和控制绘图操作,确保图形元素能够正确地显示在屏幕上或者打印出来。 DC与特定的显示设备关联,如显示器或打印机。对于显示器,DC通常与窗口相关联,特别是对于窗口的客户区。DC中的属性...
在Windows编程中,DC(Device Context)是操作系统提供的一种机制,用于抽象出设备的图形输出功能,如显示器或打印机。双缓存DC画图是一种优化图形绘制效率的技术,尤其适用于频繁更新界面的情况。在VC6.0这个经典的...
从给定的文件信息来看,我们探讨的主题是“Windows绘图和水准网平差C++代码”。这涉及两个主要方面:一是如何在Windows环境下利用C++进行绘图操作,二是如何实现水准网平差算法。下面我们将分别对这两个知识点进行...
本示例代码“基于GDI绘图各种DC的使用”展示了如何在VS2008环境下,利用GDI来创建一个电子签名功能,通过不同的Device Context(DC)类型进行绘制。以下将详细介绍DC的概念及其在GDI中的应用,以及涉及的四种DC类型...
本项目“GDI绘图实现WINDOWS画板”旨在利用GDI来模仿并实现Windows附件中的画板程序,提供基本的绘画功能,如绘制线条、形状、填充颜色等,使得用户可以进行自由创作。 GDI的核心概念包括: 1. **设备上下文...
这里的"DC"代表设备上下文(Device Context),它是Windows操作系统中用于描述屏幕或打印机等设备的一个抽象概念,包含了设备的特性以及如何在设备上进行绘图的信息。而"BMP"是一种位图文件格式,广泛用于存储和显示...
GDI最初是为了统一不同视频卡的绘图指令而设计,它提供了一个抽象层,允许开发者通过调用Windows API函数来完成绘图任务,而不必关心具体硬件的差异。GDI+则是GDI的增强版,它引入了.NET基类库,使得绘图更加直观,...
DC是Windows操作系统中的一个重要概念,它是一个抽象层,提供了与设备进行图形交互的接口。兼容DC允许开发者在内存中创建一个临时的绘图环境,然后一次性将所有绘制的内容复制到实际的屏幕或打印设备上,从而提高...