VC++在内存中绘图

简介:

在内存位图中绘图,并显示。代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
HDC  hdc=::GetDC(m_hWnd);  
RECT rect;    
GetClientRect(hwnd,&rect);    
int  cxClient = rect.right;  
int  cyClient = rect.bottom;  
   
//为显示设备创建一块相应的内存  
HDC  hdcmem = CreateCompatibleDC(NULL);  
   
//创建位图  
HBITMAP  hBitmap = CreateCompatibleBitmap(hdc,cxClient,cyClient);  
   
//将内存句柄和位图句柄绑定  
SelectObject(hdcmem,hBitmap);  
   
//画图  
FillRect(hdcmem,&rect,NULL);  
Rectangle(hdcmem,20,20,100,100);    
//显示到窗口上  
BitBlt(hdc,0,0,cxClient,cyClient,hdcmem,0,0,SRCCOPY);  
   
DeleteObject(hdcmem);  
DeleteObject(hBitmap);  
::ReleaseDC(m_hWnd,hdc);

要创建多个内存位图,可以多次调用CreateCompatibleDC和CreateCompatibleBitmap函数。

无论是在内存中绘图还是将一个位图文件显示到窗口上,都是这两个函是配合使用.如果不用CreateCompatibleBitmap函数,也可通过CBitMap加载一个张位图,并与内存DC关联。








本文转自Chinayu201451CTO博客,原文链接: http://blog.51cto.com/9233403/1968325,如需转载请自行联系原作者






相关文章
|
8天前
|
程序员 编译器 C++
【C++核心】C++内存分区模型分析
这篇文章详细解释了C++程序执行时内存的四个区域:代码区、全局区、栈区和堆区,以及如何在这些区域中分配和释放内存。
24 2
|
2月前
|
存储 编译器 C语言
内存管理【C++】
内存管理【C++】
43 1
|
2月前
|
存储 编译器 C语言
【C++】C\C++内存管理
【C++】C\C++内存管理
【C++】C\C++内存管理
|
4天前
|
安全 C++
超级好用的C++实用库之环形内存池
超级好用的C++实用库之环形内存池
19 5
|
4天前
|
C++
超级好用的C++实用库之动态内存池
超级好用的C++实用库之动态内存池
|
2月前
|
编译器 C++
virtual类的使用方法问题之C++类中的非静态数据成员是进行内存对齐的如何解决
virtual类的使用方法问题之C++类中的非静态数据成员是进行内存对齐的如何解决
|
2月前
|
存储 Java C语言
【C++】C/C++内存管理
【C++】C/C++内存管理
|
29天前
|
C语言 C++
C++(二)内存管理
本文档详细介绍了C++中的内存管理机制,特别是`new`和`delete`关键字的使用方法。首先通过示例代码展示了如何使用`new`和`delete`进行单个变量和数组的内存分配与释放。接着讨论了内存申请失败时的处理方式,包括直接抛出异常、使用`try/catch`捕获异常、设置`set_new_handler`函数以及不抛出异常的处理方式。通过这些方法,可以有效避免内存泄漏和多重释放的问题。
|
2月前
|
存储 编译器 C语言
C++内存管理(区别C语言)深度对比
C++内存管理(区别C语言)深度对比
72 5
|
2月前
|
存储 程序员 编译器
c++学习笔记08 内存分区、new和delete的用法
C++内存管理的学习笔记08,介绍了内存分区的概念,包括代码区、全局区、堆区和栈区,以及如何在堆区使用`new`和`delete`进行内存分配和释放。
40 0