nim_duilib/ui_components/cef_control/util/memory_dc.h

47 lines
950 B
C
Raw Normal View History

2019-04-19 17:19:57 +08:00
/** @file memory_dc.h
* @brief <EFBFBD>ڴ<EFBFBD>dc<EFBFBD>ά<EFBFBD><EFBFBD>HBITMAP<EFBFBD><EFBFBD>HDC<EFBFBD><EFBFBD><EFBFBD>󣬷<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٵĴ<EFBFBD><EFBFBD><EFBFBD>λͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @copyright (c) 2016, NetEase Inc. All rights reserved
* @author Redrain
* @date 2016/7/19
*/
#pragma once
class MemoryDC
{
public:
MemoryDC();
~MemoryDC();
// <20><>ʼ<EFBFBD><CABC><EFBFBD>ڴ<EFBFBD>dc<64><63><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6>λͼ<CEBB><CDBC><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>pBits<74><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>գ<EFBFBD><D5A3><EFBFBD><EFBFBD><EFBFBD>pBits<74><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λͼ
// <20>˺<EFBFBD><CBBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Է<EFBFBD><D4B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><C3A3><EFBFBD><EFBFBD>Զ<EFBFBD>ɾ<EFBFBD><C9BE>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD>λͼ<CEBB><CDBC><EFBFBD><EFBFBD>
bool Init(HDC src_dc, int width, int height, const LPVOID pBits = NULL);
// ɾ<><C9BE>λͼ<CEBB><CDBC><EFBFBD>󲢳<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void DeleteDC();
// <20>ж<EFBFBD><D0B6>ڴ<EFBFBD>dc<64>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>
bool IsValid();
HDC GetDC();
HBITMAP GetBitmap();
// <20><>ȡ<EFBFBD>ڴ<EFBFBD>λͼ<CEBB><CDBC><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EBA3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λͼ
BYTE* GetBits();
// <20><>ȡ<EFBFBD>ڴ<EFBFBD>λͼ<CEBB>Ŀ<EFBFBD><C4BF><EFBFBD>
int GetWidth();
// <20><>ȡ<EFBFBD>ڴ<EFBFBD>λͼ<CEBB>ĸ߶<C4B8>
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_;
};