gcbuffer.cpp
来自「一个symbian上成熟的小游戏源码」· C++ 代码 · 共 69 行
CPP
69 行
#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 + =
减小字号Ctrl + -
显示快捷键?