47 lines
950 B
C++
47 lines
950 B
C++
/** @file memory_dc.h
|
||
* @brief 内存dc类,维护HBITMAP与HDC对象,方便快速的储存位图数据
|
||
* @copyright (c) 2016, NetEase Inc. All rights reserved
|
||
* @author Redrain
|
||
* @date 2016/7/19
|
||
*/
|
||
#pragma once
|
||
|
||
class MemoryDC
|
||
{
|
||
public:
|
||
MemoryDC();
|
||
~MemoryDC();
|
||
|
||
// 初始化内存dc数据,并创建出对应的位图对象
|
||
// 如果pBits参数不为空,则用pBits参数的数据填充位图
|
||
// 此函数可以反复调用,会自动删除原来的位图对象
|
||
bool Init(HDC src_dc, int width, int height, const LPVOID pBits = NULL);
|
||
|
||
// 删除位图对象并初始化变量
|
||
void DeleteDC();
|
||
|
||
// 判断内存dc是否可以使用
|
||
bool IsValid();
|
||
|
||
HDC GetDC();
|
||
HBITMAP GetBitmap();
|
||
|
||
// 获取内存位图数据指针,可用于填充位图
|
||
BYTE* GetBits();
|
||
// 获取内存位图的宽度
|
||
int GetWidth();
|
||
// 获取内存位图的高度
|
||
int GetHeight();
|
||
|
||
private:
|
||
bool CreateMemoryDC(HDC src_dc, int width, int height, void** pBits);
|
||
|
||
private:
|
||
HDC mem_dc_;
|
||
HBITMAP bitmap_;
|
||
HBITMAP old_bitmap_;
|
||
BITMAP bitmap_info_;
|
||
|
||
SIZE bitmap_size_;
|
||
bool valid_;
|
||
}; |