114 lines
1.8 KiB
C++
114 lines
1.8 KiB
C++
#include "StdAfx.h"
|
|
#include "GrpDIB.h"
|
|
|
|
CGraphicDib::CGraphicDib()
|
|
{
|
|
Initialize();
|
|
}
|
|
|
|
CGraphicDib::~CGraphicDib()
|
|
{
|
|
Destroy();
|
|
}
|
|
|
|
void CGraphicDib::Initialize()
|
|
{
|
|
m_hDC=NULL;
|
|
m_hBmp=NULL;
|
|
m_pvBuf=NULL;
|
|
m_width=0;
|
|
m_height=0;
|
|
}
|
|
|
|
void CGraphicDib::Destroy()
|
|
{
|
|
if (m_hBmp) DeleteObject(m_hBmp);
|
|
if (m_hDC) DeleteDC(m_hDC);
|
|
|
|
Initialize();
|
|
}
|
|
|
|
bool CGraphicDib::Create(HDC hDC, int width, int height)
|
|
{
|
|
Destroy();
|
|
|
|
m_width = width;
|
|
m_height = height;
|
|
|
|
ZeroMemory(&m_bmi.bmiHeader, sizeof(BITMAPINFOHEADER));
|
|
m_bmi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
|
|
m_bmi.bmiHeader.biWidth = m_width;
|
|
m_bmi.bmiHeader.biHeight = -m_height;
|
|
m_bmi.bmiHeader.biPlanes = 1;
|
|
m_bmi.bmiHeader.biBitCount = 32;
|
|
m_bmi.bmiHeader.biCompression = BI_RGB;
|
|
|
|
m_hDC=CreateCompatibleDC(hDC);
|
|
if (!m_hDC)
|
|
{
|
|
assert(!"CGraphicDib::Create CreateCompatibleDC Error");
|
|
return false;
|
|
}
|
|
|
|
m_hBmp=CreateDIBSection(m_hDC, &m_bmi, DIB_RGB_COLORS, &m_pvBuf, NULL, 0);
|
|
if (!m_hBmp)
|
|
{
|
|
assert(!"CGraphicDib::Create CreateDIBSection Error");
|
|
return false;
|
|
}
|
|
|
|
SelectObject(m_hDC, m_hBmp);
|
|
|
|
::SetTextColor(m_hDC, RGB(255, 255, 255));
|
|
|
|
return true;
|
|
}
|
|
|
|
HDC CGraphicDib::GetDCHandle()
|
|
{
|
|
return m_hDC;
|
|
}
|
|
|
|
void CGraphicDib::SetBkMode(int iBkMode)
|
|
{
|
|
::SetBkMode(m_hDC, iBkMode);
|
|
}
|
|
|
|
void CGraphicDib::TextOut(int ix, int iy, const char * c_szText)
|
|
{
|
|
::SetBkColor(m_hDC, 0);
|
|
::TextOut(m_hDC, ix, iy, c_szText, strlen(c_szText));
|
|
}
|
|
|
|
void CGraphicDib::Put(HDC hDC, int x, int y)
|
|
{
|
|
SetDIBitsToDevice(
|
|
hDC,
|
|
x,
|
|
y,
|
|
m_width,
|
|
m_height,
|
|
0,
|
|
0,
|
|
0,
|
|
m_height,
|
|
m_pvBuf,
|
|
&m_bmi,
|
|
DIB_RGB_COLORS
|
|
);
|
|
}
|
|
|
|
void* CGraphicDib::GetPointer()
|
|
{
|
|
return m_pvBuf;
|
|
}
|
|
|
|
int CGraphicDib::GetWidth()
|
|
{
|
|
return m_width;
|
|
}
|
|
|
|
int CGraphicDib::GetHeight()
|
|
{
|
|
return m_height;
|
|
} |