📄 gcbuffer.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 + -