⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 membitmap.cpp

📁 利用VC++开发
💻 CPP
字号:
// MemBitmap.cpp: implementation of the CMemBitmap class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"

#include "MemBitmap.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CMemBitmap::CMemBitmap()
{

}

CMemBitmap::~CMemBitmap()
{

}
////////////////////////////////////////////////////////
//初始化位图类
void CMemBitmap::init(CWnd *pwnd)
{ 
	RECT rect;            
	//保存窗体客户区域的大小的矩形类型变量   
	pWnd = pwnd;                                   
	//获取窗体指针   
	pwnd->GetClientRect(&rect); 
	//得到窗体客户区域的大小   
    CreateCompatibleBitmap( pwnd->GetDC(), rect.right, rect.bottom );
    //利用窗体类的CDC指针在内存中创建位图   

}
/* CreateCompatibleBitmap函数作用是初始化位图类
其原型如下:
BOOL CreateCompatibleBitmap( CDC* pDC, int nWidth, int nHeight );
pDC是设备环境指针,本例用窗体的设备环境指针。
nWidth和nHeight是指定该位图尺寸的高度与宽度,单位为象素 */

//######################################################################

//TextOut函数用于在指定位置用指定的大小,颜色显示文本

void CMemBitmap::TextOut(int x, int y, int iSize, LPCSTR strText, COLORREF color)
{       
	CDC* pDC = pWnd->GetDC();
	//获取窗体的指针 
    CFont  NewFont;  
	//文本的字体对象       
	CFont  *OldFont; 
	//保存以前的字体指针       
	CDC    dcMem ;   
	//内存中的DC指针,以便调用GDI函数在位图中绘图   
	dcMem.CreateCompatibleDC(pDC);   
	//创建与窗体设备环境一样大小DC 
	
    dcMem.SelectObject(this);       
	//将内存中的DC选择该类的位图对象

	NewFont.CreatePointFont(iSize,"宋体");
	//创建显示文本的字体

	OldFont = dcMem.SelectObject(&NewFont);   
	//选择新字体 
	
	dcMem.SetTextColor(color);

	dcMem.SetBkMode( TRANSPARENT );
	//设置透明方式

	dcMem.TextOut(x,y,strText);
	//在指定位置显示文本 
	
	dcMem.SelectObject(OldFont);
	//释放 

    NewFont.DeleteObject();      
	
	dcMem.DeleteDC();
	
	pWnd->ReleaseDC(pDC);
}

//////////////////////////////////////////////////////////////
//
//我们再实现一个清除位图函数,以便在适当时候用指定的颜色将位图填充
//达到清图的效果,参数x1,y1,x2,y2指定了矩形区的尺寸,color指定了填充色。

void CMemBitmap::Clear(int x1, int y1, int x2, int y2, COLORREF color)
{       
	CDC* pDC = pWnd->GetDC();       
	CDC dcMem ; //内存中的DC指针
	
	dcMem.CreateCompatibleDC(pDC);          
	
	dcMem.SelectObject(this);
	
	CBrush  *OldBrush , blbrush(color);        
	     
	dcMem.SetBkColor(color);
	
	OldBrush = dcMem.SelectObject( &blbrush );
	
	dcMem.Rectangle( x1 , y1 , x2 , y2 );
	
	dcMem.SelectObject(OldBrush);       
	
	dcMem.DeleteDC();       

	pWnd->ReleaseDC(pDC);
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -