游戏类初步一..
// CCanvas 的实现桥接, 主要是为了能适应GDI, GAPI两种图像绘制接口.
class CCanvasImpl
{
public:
virtual void SetCanvasSize(int cx, int cy) = 0;
virtual void BltBitmap(int dstX, int dstY, int dstCX, int dstCY, CBitmap *pBitmap, int srcX, int srcY, int srcCX, int srcCY) = 0;
virtual void TransBltBitmap(int dstX, int dstY, int dstCX, int dstCY, CBitmap *pBitmap, int srcX, int srcY, int srcCX, int srcCY, unsigned int colorKey) = 0;
virtual void BitBltOn(CCanvas &canvas) = 0;
virtual void SetPixel(int x, int y, unsigned int color) = 0;
virtual unsigned int GetPixel(int x, int y) = 0;
virtual void Present() = 0; // 呈现到目标设备屏幕上或窗口HWND上.
};
class CCanvas
{
public:
CCanvas(CCanvasImpl *pCanvasImpl);
~CCanvas();
void SetImplment(CCanvasImpl *pCanvasImpl);
void SetCanvasSize(int cx, int cy);
void BltBitmap(int dstX, int dstY, int dstCX, int dstCY, CBitmap *pBitmap, int srcX, int srcY, int srcCX, int srcCY);
void TransBltBitmap(int dstX, int dstY, int dstCX, int dstCY, CBitmap *pBitmap, int srcX, int srcY, int srcCX, int srcCY, unsigned int colorKey);
void BitBltOn(CCanvas &canvas);
void SetPixel(int x, int y, unsigned int color);
unsigned int GetPixel(int x, int y);
void Present(); // 呈现到目标设备屏幕上或窗口HWND上.
protected:
CCanvasImpl *m_pCanvasImpl;
};
class CSprite
{
public:
virtual void PrepareFrame();
virtual void DrawFrame(CSurface *pDstSurface);
virtual void NextFrame();
};
class CCanvasImpl
{
public:
virtual void SetCanvasSize(int cx, int cy) = 0;
virtual void BltBitmap(int dstX, int dstY, int dstCX, int dstCY, CBitmap *pBitmap, int srcX, int srcY, int srcCX, int srcCY) = 0;
virtual void TransBltBitmap(int dstX, int dstY, int dstCX, int dstCY, CBitmap *pBitmap, int srcX, int srcY, int srcCX, int srcCY, unsigned int colorKey) = 0;
virtual void BitBltOn(CCanvas &canvas) = 0;
virtual void SetPixel(int x, int y, unsigned int color) = 0;
virtual unsigned int GetPixel(int x, int y) = 0;
virtual void Present() = 0; // 呈现到目标设备屏幕上或窗口HWND上.
};
class CCanvas
{
public:
CCanvas(CCanvasImpl *pCanvasImpl);
~CCanvas();
void SetImplment(CCanvasImpl *pCanvasImpl);
void SetCanvasSize(int cx, int cy);
void BltBitmap(int dstX, int dstY, int dstCX, int dstCY, CBitmap *pBitmap, int srcX, int srcY, int srcCX, int srcCY);
void TransBltBitmap(int dstX, int dstY, int dstCX, int dstCY, CBitmap *pBitmap, int srcX, int srcY, int srcCX, int srcCY, unsigned int colorKey);
void BitBltOn(CCanvas &canvas);
void SetPixel(int x, int y, unsigned int color);
unsigned int GetPixel(int x, int y);
void Present(); // 呈现到目标设备屏幕上或窗口HWND上.
protected:
CCanvasImpl *m_pCanvasImpl;
};
class CSprite
{
public:
virtual void PrepareFrame();
virtual void DrawFrame(CSurface *pDstSurface);
virtual void NextFrame();
};
浙公网安备 33010602011771号