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

📄 gcbuffer.cpp

📁 一个symbian上成熟的小游戏源码
💻 CPP
字号:
#include "GcBuffer.h"
#include <gdi.h>

namespace gamespace
{

CGcBuffer::CGcBuffer()
{
}

CGcBuffer::~CGcBuffer()
{
	delete iBitmapDevice;
	delete iBitmapContext;
	delete iBufferBitmap;
}

CGcBuffer* CGcBuffer::NewL(CWindowGc& aGc,TInt aBufferWidth,TInt aBufferHeight)
{
	CGcBuffer* self=CGcBuffer::NewLC(aGc,aBufferWidth,aBufferHeight);
	CleanupStack::Pop(); 
	return self;
}

CGcBuffer* CGcBuffer::NewLC(CWindowGc& aGc,TInt aBufferWidth,TInt aBufferHeight)
{
	CGcBuffer* self = new (ELeave)CGcBuffer();
	CleanupStack::PushL(self);
	self->ConstructL(aGc,aBufferWidth,aBufferHeight);
	return self;
}

void CGcBuffer::ConstructL(CWindowGc& aGc,TInt aBufferWidth,TInt aBufferHeight)
{
	iBufferWidth = aBufferWidth;
	iBufferHeight = aBufferHeight;

	iBufferBitmap = new(ELeave)CFbsBitGcBitmap;
	iBufferBitmap->Create(TSize(iBufferWidth,iBufferHeight),EColor16MU);//EColor16MA

	iBitmapContext = (CBitmapContext*)&aGc;

	iBitmapDevice = CFbsBitmapDevice::NewL(iBufferBitmap);
	iBitmapDevice->CreateBitmapContext(iBitmapContext);
}

void CGcBuffer::Flush( CWindowGc& aGc, TInt aX, TInt aY )
{	
	//aGc.SetDrawMode( CGraphicsContext::EDrawModeNOTAND);
	aGc.BitBlt(TPoint(aX,aY),iBufferBitmap,
		TRect(aX,aY,iBufferWidth,iBufferHeight));
}

CWindowGc& CGcBuffer::BufferGc()
{
	CWindowGc* gc=(CWindowGc*)iBitmapContext;
	return *gc;
}

void CGcBuffer::ClearBuffer( TRgb aColor /*= KRgbWhite */ )
{
	iBitmapContext->SetBrushColor(aColor);
	iBitmapContext->SetBrushStyle(CBitmapContext::ESolidBrush);
	iBitmapContext->DrawRect(TRect(0,0,iBufferWidth,iBufferHeight));
	iBitmapContext->Clear();
}

}

⌨️ 快捷键说明

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