📄 gdicanvas.cpp
字号:
// GDICanvas.cpp: implementation of the CGDICanvas class.
//
//////////////////////////////////////////////////////////////////////
#include "GDICanvas.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CGDICanvas::CGDICanvas()
{
//initialize all members to NULL or 0
hdcMem=NULL;
hbmNew=NULL;
hbmOld=NULL;
nWidth=0;
nHeight=0;
}
CGDICanvas::~CGDICanvas()
{
//if the hdcMem has not been destroyed, do so
if(hdcMem) Destroy();
}
//////////////////////////////////////////////////////////////////////
//Creation/Loading
//////////////////////////////////////////////////////////////////////
//loads bitmap from a file
void CGDICanvas::Load(HDC hdcCompatible,LPCTSTR lpszFilename)
{
//if the hdcMem is not null, destroy
if(hdcMem) Destroy();
//create the memory dc
hdcMem=CreateCompatibleDC(hdcCompatible);
//load the image
hbmNew=(HBITMAP)LoadImage(NULL,lpszFilename,IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
//select the image into the dc
hbmOld=(HBITMAP)SelectObject(hdcMem,hbmNew);
//fetch the bitmaps properties
BITMAP bmp;
GetObject(hbmNew,sizeof(BITMAP),(LPVOID)&bmp);
//assign height and width
nWidth=bmp.bmWidth;
nHeight=bmp.bmHeight;
}
//creates a blank bitmap
void CGDICanvas::CreateBlank(HDC hdcCompatible, int width, int height)
{
//if the hdcMem is not null, destroy
if(hdcMem) Destroy();
//create the memory dc
hdcMem=CreateCompatibleDC(hdcCompatible);
//create the image
hbmNew=CreateCompatibleBitmap(hdcCompatible,width,height);
//select the image into the dc
hbmOld=(HBITMAP)SelectObject(hdcMem,hbmNew);
//assign the width and height
nWidth=width;
nHeight=height;
}
//////////////////////////////////////////////////////////////////////
//Clean-up
//////////////////////////////////////////////////////////////////////
//destroys bitmap and dc
void CGDICanvas::Destroy()
{
//restore old bitmap
SelectObject(hdcMem,hbmOld);
//delete new bitmap
DeleteObject(hbmNew);
//delete device context
DeleteDC(hdcMem);
//set all members to 0 or NULL
hdcMem=NULL;
hbmNew=NULL;
hbmOld=NULL;
nWidth=0;
nHeight=0;
}
//////////////////////////////////////////////////////////////////////
//Conversion
//////////////////////////////////////////////////////////////////////
//converts to HDC
CGDICanvas::operator HDC()
{
//return the hdcMem member
return(hdcMem);
}
//////////////////////////////////////////////////////////////////////
//Returning information
//////////////////////////////////////////////////////////////////////
//return width
int CGDICanvas::GetWidth()
{
//return the width
return(nWidth);
}
//return height
int CGDICanvas::GetHeight()
{
//return the height
return(nHeight);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -