CBWDraw

現在、開発凍結されています。ここに記載されている内容は、現在実現の目処はたっていません。

06/08/26

概要

このクラスは表示画面の制御を担う、グラフィックエンジンの中核。
具体的には、低解像度の画面の拡大表示を行う。
内部的にCDIBDrawを利用しているため、CDIBDrawと同じ制限を受ける。
なお、レイヤーは拡大表示の対象外なので注意すること(DIBDrawが直接描画する)。

使用方法

まず、SetDisplayAndClientで画面設定を行う。
これで画面が使用可能になるので、CBWDrawの描画関数を使って描画すれば正しい位置に正しいサイズで表示される。

メンバ関数

LRESULT BlendBlt(CPlaneBase* lpSrc,int x,int y,DWORD dwDstRGBRate,DWORD dwSrcRGBRate,LPRECT lpSrcRect=NULL,LPSIZE lpDstSize=NULL,LPRECT lpClipRect=NULL)

位置・大きさが調整される以外は通常と同じ。

LRESULT BlendBltFast(CPlaneBase* lpSrc,int x,int y,DWORD dwDstRGBRate,DWORD dwSrcRGBRate,LPRECT lpSrcRect=NULL,LPSIZE lpDstSize=NULL,LPRECT lpClipRect=NULL)

位置・大きさが調整される以外は通常と同じ。

LRESULT Blt(CPlaneBase* lpSrc,int x,int y,LPRECT lpSrcRect=NULL,LPSIZE lpDstSize=NULL,LPRECT lpClipRect=NULL)

位置・大きさが調整される以外は通常と同じ。

LRESULT BltFast(CPlaneBase* lpSrc,int x,int y,LPRECT lpSrcRect,LPSIZE lpDstSize,LPRECT lpClipRect)

位置・大きさが調整される以外は通常と同じ。

LRESULT BltNatural(CPlaneBase* lpSrc,int x,int y,LPRECT lpSrcRect=NULL,LPSIZE lpDstSize=NULL,LPRECT lpClipRect=NULL)

位置・大きさが調整される以外は通常と同じ。

LRESULT BltNaturalNoZoom(CPlaneBase* lpSrc,int x,int y,LPRECT lpSrcRect=NULL,LPSIZE lpDstSize=NULL,LPRECT lpClipRect=NULL)

BltNaturalとほぼ同じだが自動的に拡大されない点が通常と異なる。
すなわち、高解像度に合わせて予め大きくレンダリングされた画像を表示するのに使える。

LRESULT Clear(DWORD dwDIB32RGB=0,LPRECT lpRect=NULL)

位置・大きさが調整される以外は通常と同じ。

LRESULT ClearRect(LPRECT lpRect=NULL)

位置・大きさが調整される以外は通常と同じ。

void ClientToScreen(int&x, int&y)

低解像度画面の座標から実際の画面の座標へ変換する。

void ClientToScreenRect(LPRECT lprcClient, LPRECT lprcScreen=NULL)

低解像度画面の座標から実際の画面の座標へ変換する。

int ClientToScreenX(int x)

低解像度画面の座標から実際の画面の座標へ変換する。

int ClientToScreenY(int y)

低解像度画面の座標から実際の画面の座標へ変換する。

LRESULT FadeBltAlpha(CPlaneBase* lpSrc,int x,int y,int nFadeRate)

位置・大きさが調整される以外は通常と同じ。

void FitClient()

低解像度画面の拡大比率と表示位置を調整する。
通常自動的に呼ばれるので明示的に呼び出す必要はない。

LRESULT FlushEffect(LPRECT lpRect=NULL)

位置・大きさが調整される以外は通常と同じ。

void GetSize(int &x,int &y)

低解像度画面の解像度を取得する。

int GetZoom()

現在のズーム比率を返す。

bool IsLoaded()

使われていない。
常にfalseを返す。

LRESULT Load(string szBitmapFileName,bool bLoadPalette=false)

使われていない。
常に-1を返す。

LRESULT LoadW(string szBitmapFileName256,string szBitmapFileNameElse,bool bLoadPalette=true)

使われていない。
常に-1を返す。

LRESULT MosaicEffect(int d, LPRECT lpRect=NULL)

位置・大きさが調整される以外は通常と同じ。

void OnDraw(RECT* lpRect=NULL,bool bLayerCallBack=true)

実際の画面表示を行う。
場合によってはlpRectが無視される。

LRESULT Release()

動作は保障されない。

LRESULT Save()

拡大された画面を保存する。
余白は切り取られる。

void ScreenToClient(int&x, int&y)

実際の画面の座標から低解像度画面の座標へ変換する。

int ScreenToClientX(int x)

実際の画面の座標から低解像度画面の座標へ変換する。

int ScreenToClientY(int y)

実際の画面の座標から低解像度画面の座標へ変換する。

LRESULT SetClient(int nSizeX=0,int nSizeY=0)

低解像度画面の大きさを指定する。

LRESULT SetColorKey(int r,int g,int b)

動作は保障されない。

LRESULT SetColorKey(int x,int y)

動作は保障されない。

LRESULT SetDisplay(bool bFullScr=false,int nSizeX=0,int nSizeY=0,int nColorDepth=0)

実際の画面の大きさを変更する。

LRESULT SetDisplay(int nZoom)

実際の画面の大きさをnZoomの拡大率に拡大されるサイズに変更する。

LRESULT SetDisplayAndClient(bool bFullScr, int nDisplaySizeX, int nDisplaySizeY, int nColorDepth, int nClientSizeX, int nClientSizeY)

実際の画面の大きさと低解像度画面の大きさを同時に変更する。
最初にこれかオーバーロードされた関数の呼び出すべき。

LRESULT SetDisplayAndClient(int nZoom, int nClientSizeX, int nClientSizeY)

低解像度画面の大きさを変更し、実際の画面の大きさをnZoomの拡大率に拡大されるサイズに変更する。
最初にこれかオーバーロードされた関数の呼び出すべき。