TNB Library
クラス | 公開型 | 公開メンバ関数 | 全メンバ一覧
CDrawingContainer クラス

描画コンテナクラス [詳解]

#include <TnbDrawingContainer.h>

+ CDrawingContainer の継承関係図

公開型

enum  EDirection {
  DOWN , RIGHT , RETURN , VRETURN ,
  STAY
}
 方向値 [詳解]
 
enum  ELocation {
  RIGHTTOP , RIGHTCENTER , RIGHTBOTTOM , DOWNLEFT ,
  DOWNCENTER , DOWNRIGHT , CENTER
}
 位置指定値 [詳解]
 
typedef CPointerHandleT< IDrawablePtr
 ポインタハンドル型宣言 [詳解]
 

公開メンバ関数

INDEX Add (const IDrawable &draw, EDirection dire=DOWN)
 [追加] 描画情報追加. [詳解]
 
INDEX Add (INDEX index, ELocation locate, const IDrawable &draw, EDirection dire=DOWN)
 [追加] 描画情報追加. [詳解]
 
INDEX AddBitmap (CBitmapHandle bmp, EDirection dire=DOWN)
 [追加] ビットマップ描画情報追加. [詳解]
 
INDEX AddBitmap (INDEX index, ELocation locate, CBitmapHandle bmp, EDirection dire=DOWN)
 [追加] ビットマップ描画情報追加. [詳解]
 
INDEX AddNewPointer (IDrawable *pDraw, EDirection dire=DOWN)
 [追加] 描画情報追加. [詳解]
 
INDEX AddNewPointer (INDEX index, ELocation locate, IDrawable *pDraw, EDirection dire=DOWN)
 [追加] 描画情報追加. [詳解]
 
int AppendBitmaps (LPCTSTR lpszPath, INDEX maxIndex, EDirection dire=DOWN)
 [追加] 一括ビットマップファイル読込み. [詳解]
 
const IDrawableAt (INDEX index) const
 [参照] 指定INDEXの参照. [詳解]
 
 CDrawingContainer (void)
 コンストラクタ [詳解]
 
virtual IDrawableClone (void) const
 [作成] クローン作成. [詳解]
 
CBitmapHandle CreateBitmap (COLORREF color=CLR_INVALID) const
 [作成] ビットマップ作成. [詳解]
 
void DefaultSize (void)
 [設定] サイズリセット. [詳解]
 
virtual void Draw (HDC dc, int x=0, int y=0) const
 [描画] 描画. [詳解]
 
void DrawAt (INDEX index, HDC dc, int x=0, int y=0) const
 [描画] 描画. [詳解]
 
virtual void DrawEx (HDC dc, int x, int y, LPARAM lParam) const
 [描画] 描画. [詳解]
 
bool GetAllRect (RECT &_rect) const
 [取得] 矩形範囲取得. [詳解]
 
HRGN GetAllRgn (void) const
 [取得] 領域範囲取得. [詳解]
 
const POINT & GetAppendPosition (void) const
 [取得] 追加相対座標取得. [詳解]
 
bool GetAtRect (INDEX index, RECT &_rect) const
 [取得] ビットマップ取得. [詳解]
 
size_t GetCount (void) const
 [取得] 格納数取得. [詳解]
 
virtual bool GetSize (SIZE &_size) const
 [取得] サイズ取得. [詳解]
 
bool MoveAppendPosition (INDEX index, EDirection dire=DOWN, int x=0, int y=0)
 [移動] 追加相対座標設定. [詳解]
 
void OffsetAppendPosition (int x, int y)
 [操作] 追加相対座標移動. [詳解]
 
void RemoveAll (void)
 [削除] すべて削除. [詳解]
 
bool RemoveAt (INDEX index)
 [削除] 指定INDEXの削除. [詳解]
 
virtual bool Resize (const SIZE &size)
 [設定] サイズ設定. [詳解]
 
void SetAppendPosition (int x, int y)
 [操作] 追加相対座標設定. [詳解]
 
virtual ~CDrawingContainer (void)
 デストラクタ [詳解]
 

詳解

描画コンテナクラス

{@link IDrawable 描画情報}と座標を対に複数保持するクラスです。

INDEX で{@link IDrawable 描画情報}を管理することが可能です。

管理している{@link IDrawable 描画情報}を、まとめて、デバイスコンテキストに描画することが可能です。
覚え書き
本クラスに描画情報を追加する際、相対座標も同時に記憶しているため、 Draw() で描画時にそれぞれの相対座標に描画することができます。
相対座標は、インスタンス生成時は左上(0,0)になっています。 AddCloneObject() や AddNewPointer() , AddBitmap() , AppendBitmaps() , MoveAppendPosition() , SetAppendPosition() , OffsetAppendPosition() で任意に移動します。
指定の インデックスに対する位置に対する相対座標でも、追加可能です。( ELocation )
使用例
    //= 宣言
    CDrawingContainer m_bmpc; // コンテナ作成

    //= 設定
    m_bmpc.AddBitmap("c:\\BMP\\BackTop1.bmp", bc.RIGHT);  //BackTop1.bmp登録後、Offsetを真右に。
    m_bmpc.AddBitmap("c:\\BMP\\BackTop2.bmp", bc.RETURN);  //BackTop2.bmp登録後、Offsetを下の左へ。       
    m_bmpc.AddBitmap("c:\\BMP\\Back.bmp", bc.DOWN);  //Back.bmp登録後、Offsetを真下へ。
    m_bmpc.AddBitmap("c:\\BMP\\BackBottom.bmp");  //BackBottom.bmp登録。

    //= 表示 (デバイスコンテキストに表示 )
    void CXXX::OnPaint() { 
        CPaintDC dc(this);
        m_bmpc.Draw(dc);
    }
    

必要ファイル
TnbDrawingContainer.h
日付
07/10/03 新規作成
07/11/02 抽象化するために、 IDrawable のコンテナに変更。
07/11/17 BitmapConainer と一本化。
07/11/20 ELocation 追加。 CNullDrawer 引越し。
07/12/12 GetAllRgn() 追加。
07/12/19 Resize() に対応。

TnbDrawingContainer.h68 行目に定義があります。

型定義メンバ詳解

◆ Ptr

typedef CPointerHandleT<IDrawable> Ptr
inherited

ポインタハンドル型宣言

TnbDrawable.h89 行目に定義があります。

列挙型メンバ詳解

◆ EDirection

enum EDirection

方向値

列挙値
DOWN 

下へ移動

RIGHT 

右へ移動

RETURN 

下へ移動して一番左へ

VRETURN 

右へ移動して一番上へ

STAY 

移動なし

TnbDrawingContainer.h418 行目に定義があります。

◆ ELocation

enum ELocation

位置指定値

列挙値
RIGHTTOP 

上あわせで、右に追加。

RIGHTCENTER 

中央あわせで、右に追加。

RIGHTBOTTOM 

下あわせで、右に追加。

DOWNLEFT 

左あわせで、下に追加。

DOWNCENTER 

中央あわせで、下に追加。

DOWNRIGHT 

右あわせで、下に追加。

CENTER 

中央に追加。

TnbDrawingContainer.h457 行目に定義があります。

構築子と解体子

◆ CDrawingContainer()

CDrawingContainer ( void  )

コンストラクタ

TnbDrawingContainer.h74 行目に定義があります。

◆ ~CDrawingContainer()

virtual ~CDrawingContainer ( void  )
virtual

デストラクタ

TnbDrawingContainer.h81 行目に定義があります。

関数詳解

◆ Add() [1/2]

INDEX Add ( const IDrawable draw,
EDirection  dire = DOWN 
)

[追加] 描画情報追加.

追加相対座標に指定の描画情報を関連づけて記憶します。

覚え書き
追加した順にインデックス 0, 1, 2, ・・・ と割り振られます。
引数
draw描画情報. 本オブジェクトにはクローンが記憶されるので、 draw は破棄してもかまいません。
dire移動方向.
戻り値
INVALID_INDEX失敗。
INVALID_INDEX以外成功。値は、追加したインデックスです。

TnbDrawingContainer.h527 行目に定義があります。

◆ Add() [2/2]

INDEX Add ( INDEX  index,
ELocation  locate,
const IDrawable draw,
EDirection  dire = DOWN 
)

[追加] 描画情報追加.

指定の座標に指定の描画情報を関連づけて記憶します。

覚え書き
指定インデックスに登録されている描画情報と相対座標から、 指定の位置に画像情報を追加します。
追加した順にインデックス 0, 1, 2, ・・・ と割り振られます。
引数
indexインデックス.
locate位置
draw描画情報. 本オブジェクトにはクローンが記憶されるので、 draw は破棄してもかまいません。
dire移動方向.
戻り値
INVALID_INDEX失敗。
INVALID_INDEX以外成功。値は、追加したインデックスです。

TnbDrawingContainer.h545 行目に定義があります。

◆ AddBitmap() [1/2]

INDEX AddBitmap ( CBitmapHandle  bmp,
EDirection  dire = DOWN 
)

[追加] ビットマップ描画情報追加.

追加相対座標に指定の描画情報を関連づけて記憶します。

覚え書き
追加した順にインデックス 0, 1, 2, ・・・ と割り振られます。
引数
bmpビットマップ。
dire移動方向.
戻り値
INVALID_INDEX失敗。
INVALID_INDEX以外成功。値は、追加したインデックスです。

TnbDrawingContainer.h559 行目に定義があります。

◆ AddBitmap() [2/2]

INDEX AddBitmap ( INDEX  index,
ELocation  locate,
CBitmapHandle  bmp,
EDirection  dire = DOWN 
)

[追加] ビットマップ描画情報追加.

指定座標に指定の描画情報を関連づけて記憶します。

覚え書き
追加した順にインデックス 0, 1, 2, ・・・ と割り振られます。
指定インデックスに登録されている描画情報と相対座標から、 指定の位置に画像情報を追加します。
引数
indexインデックス.
locate位置
bmpビットマップ。
dire移動方向.
戻り値
INVALID_INDEX失敗。
INVALID_INDEX以外成功。値は、追加したインデックスです。

TnbDrawingContainer.h577 行目に定義があります。

◆ AddNewPointer() [1/2]

INDEX AddNewPointer ( IDrawable pDraw,
EDirection  dire = DOWN 
)

[追加] 描画情報追加.

追加相対座標に指定の描画情報を関連づけて記憶します。

覚え書き
追加した順にインデックス 0, 1, 2, ・・・ と割り振られます。
引数
pDraw描画情報. 必ず、 new で作成したインスタンスを渡してください。 破棄は本オブジェクトが行います(本メソッドが失敗した時は即破棄します)。
dire移動方向.
戻り値
INVALID_INDEX失敗。
INVALID_INDEX以外成功。値は、追加したインデックスです。

TnbDrawingContainer.h480 行目に定義があります。

◆ AddNewPointer() [2/2]

INDEX AddNewPointer ( INDEX  index,
ELocation  locate,
IDrawable pDraw,
EDirection  dire = DOWN 
)

[追加] 描画情報追加.

指定の座標に指定の描画情報を関連づけて記憶します。

覚え書き
指定インデックスに登録されている描画情報と相対座標から、 指定の位置に画像情報を追加します。
追加した順にインデックス 0, 1, 2, ・・・ と割り振られます。
引数
indexインデックス.
locate位置
pDraw描画情報. 必ず、 new で作成したインスタンスを渡してください。 破棄は本オブジェクトが行います(本メソッドが失敗した時は即破棄します)。
dire移動方向.
戻り値
INVALID_INDEX失敗。
INVALID_INDEX以外成功。値は、追加したインデックスです。

TnbDrawingContainer.h512 行目に定義があります。

◆ AppendBitmaps()

int AppendBitmaps ( LPCTSTR  lpszPath,
INDEX  maxIndex,
EDirection  dire = DOWN 
)

[追加] 一括ビットマップファイル読込み.

指定ファイル名に関するビットマップファイルを読み込みます。

覚え書き
最初に RemoveAll() が実行されます。
使用例
Back001a.bmp , Back002.bmp , Back004.bmp , Back006_DC.bmp , Back010.bmp のファイルがある場合、 以下のコードを実行すると、 INDEX 1 に Back001a.bmp 、INDEX 2 に Back002.bmp 、 INDEX 4 に Back004.bmp 、INDEX 6 に Back006_DC.bmp 、INDEX 10 に Back010.bmp が割り当てられます。 これらのビットマップハンドルは、 GetAtBitmap() で容易に取り出すことが出来ます。また、 DrawAt() で容易にデバイスコンテキストに描画も出来ます。

    CBitmapContainer m_bmpc; // コンテナ作成
    m_bmpc.AppendBitmaps("c:\\BMP\\Back%03d*.bmp", 10, bc.DOWN);        
    
※上記例で Back001a.bmp , Back001b.bmp がある場合、どちらが読み込まれるかは不定になります (先に検索で見つかったほうが使用されます)。
引数
lpszPathパス名。ファイル名の数字になるところに、 %d を埋めておきます。
maxIndexインデックスの最大値。 5 であれば、 0〜5 の6個検索します。
dire移動方向.
戻り値
マイナスエラー。
0一つもなかった
1以上読み込んだ数。INDEXの最大値は GetCount() で確認してください。

TnbDrawingContainer.h608 行目に定義があります。

◆ At()

const IDrawable * At ( INDEX  index) const

[参照] 指定INDEXの参照.

引数
indexインデックス.
戻り値
NULLエラー。インデックス指定が異常。
描画情報。

TnbDrawingContainer.h250 行目に定義があります。

◆ Clone()

virtual IDrawable * Clone ( void  ) const
virtual

[作成] クローン作成.

自分と同じ処理を行うクラスを作成します。

戻り値
ポインタ。使用後は delete する必要があります。

IDrawableを実装しています。

TnbDrawingContainer.h91 行目に定義があります。

◆ CreateBitmap()

CBitmapHandle CreateBitmap ( COLORREF  color = CLR_INVALID) const

[作成] ビットマップ作成.

本オブジェクトで管理している描画情報から、ビットマップを作成し返します。

引数
color背景色を指定します。省略すると不定(塗りつぶししない) になります。 全エリア描画する描画情報の場合、背景色を指定する必要はありません。
戻り値
ビットマップ。一つも情報がない場合、 NULL ビットマップが返ります。

TnbDrawingContainer.h181 行目に定義があります。

◆ DefaultSize()

void DefaultSize ( void  )

[設定] サイズリセット.

Resize() の設定を無効にし、登録時のサイズに戻します。

TnbDrawingContainer.h165 行目に定義があります。

◆ Draw()

virtual void Draw ( HDC  dc,
int  x = 0,
int  y = 0 
) const
virtual

[描画] 描画.

指定のデバイスコンテキストの指定の座標に描画します。

引数
dcデバイスコンテキスト
xX座標
yY座標

IDrawableを実装しています。

TnbDrawingContainer.h193 行目に定義があります。

◆ DrawAt()

void DrawAt ( INDEX  index,
HDC  dc,
int  x = 0,
int  y = 0 
) const

[描画] 描画.

指定INDEXに登録されている描画情報を指定のデバイスコンテキストの指定の座標に描画します。

引数
[in]indexインデックス。
dcデバイスコンテキスト
xX座標
yY座標

TnbDrawingContainer.h374 行目に定義があります。

◆ DrawEx()

virtual void DrawEx ( HDC  dc,
int  x,
int  y,
LPARAM  lParam 
) const
virtual

[描画] 描画.

指定のデバイスコンテキストの指定の座標に描画します。

引数
dcデバイスコンテキスト
xX座標
yY座標
lParamLPARAM。管理している描画情報に渡します。

IDrawableを再実装しています。

TnbDrawingContainer.h206 行目に定義があります。

◆ GetAllRect()

bool GetAllRect ( RECT &  _rect) const

[取得] 矩形範囲取得.

登録されている描画情報の描画範囲がわかります。

引数
[out]_rect矩形範囲。
戻り値
true成功。
false失敗。

TnbDrawingContainer.h330 行目に定義があります。

◆ GetAllRgn()

HRGN GetAllRgn ( void  ) const

[取得] 領域範囲取得.

登録されている描画情報の描画領域がわかります。

戻り値
NULL失敗。
NULL以外リージョン。使用後は、破棄する必要があります。

TnbDrawingContainer.h349 行目に定義があります。

◆ GetAppendPosition()

const POINT & GetAppendPosition ( void  ) const

[取得] 追加相対座標取得.

次に追加する描画情報の相対座標になる情報が得られます。

戻り値
追加相対座標

TnbDrawingContainer.h388 行目に定義があります。

◆ GetAtRect()

bool GetAtRect ( INDEX  index,
RECT &  _rect 
) const

[取得] ビットマップ取得.

指定INDEXに登録されている描画情報のビットマップを取得することが出来ます。

覚え書き
ビットマップハンドルは、一時的なものの可能性もあります。
引数
indexインデックス。
戻り値
ビットマップ。もっていない場合やインデックスが異常の場合、 NULL ビットマップが返ります。 [取得] 矩形範囲取得. 指定INDEXに登録されている描画情報の範囲がわかります。
引数
[in]indexインデックス。
[out]_rect矩形範囲。
戻り値
true成功。
false失敗。インデックス指定が異常。

TnbDrawingContainer.h306 行目に定義があります。

◆ GetCount()

size_t GetCount ( void  ) const

[取得] 格納数取得.

格納しているビットマップ数を返します。

戻り値
数。

TnbDrawingContainer.h239 行目に定義があります。

◆ GetSize()

virtual bool GetSize ( SIZE &  _size) const
virtual

[取得] サイズ取得.

本オブジェクトの描画する領域の外接する四角のサイズを得ることが出来ます。

覚え書き
一番左上に描画する描画情報がなくても、左上から右下のサイズになります。
引数
[out]_sizeサイズ取得。
戻り値
trueサイズ取得成功。
falseデータがない。

IDrawableを実装しています。

TnbDrawingContainer.h113 行目に定義があります。

◆ MoveAppendPosition()

bool MoveAppendPosition ( INDEX  index,
EDirection  dire = DOWN,
int  x = 0,
int  y = 0 
)

[移動] 追加相対座標設定.

次に追加する描画情報の相対座標を設定することが可能です。

覚え書き
指定インデックスに登録されている描画情報と相対座標から、 指定の方向に移動した座標に、OFFSETを加えた座標を追加相対座標にします。
引数
indexインデックス.
dire移動方向.
xX方向のOFFSET値。
yY方向のOFFSET値。
戻り値
true成功。
false失敗。

TnbDrawingContainer.h439 行目に定義があります。

◆ OffsetAppendPosition()

void OffsetAppendPosition ( int  x,
int  y 
)

[操作] 追加相対座標移動.

次に追加する描画情報の相対座標をずらすことが可能です。

引数
xX方向のOFFSET値。
yY方向のOFFSET値。

TnbDrawingContainer.h399 行目に定義があります。

◆ RemoveAll()

void RemoveAll ( void  )

[削除] すべて削除.

格納している描画情報をすべて破棄し、追加相対座標を左上(0,0) にします。

TnbDrawingContainer.h274 行目に定義があります。

◆ RemoveAt()

bool RemoveAt ( INDEX  index)

[削除] 指定INDEXの削除.

引数
indexインデックス.
戻り値
true成功。
false失敗。インデックス指定が異常。

TnbDrawingContainer.h265 行目に定義があります。

◆ Resize()

virtual bool Resize ( const SIZE &  size)
virtual

[設定] サイズ設定.

本オブジェクトの描画する領域の外接する四角のサイズを設定することが出来ます。

覚え書き
管理している描画情報のいずれかがサイズ設定に対応していなくても、 本クラスの本メソッドは成功します。サイズ設定できるもののみ、指定サイズ内に入るようにします。
引数
sizeサイズ。
戻り値
trueサイズ変更成功。
false失敗。(本クラスでは失敗はありません)

IDrawableを実装しています。

TnbDrawingContainer.h134 行目に定義があります。

◆ SetAppendPosition()

void SetAppendPosition ( int  x,
int  y 
)

[操作] 追加相対座標設定.

次に追加する描画情報の相対座標を設定することが可能です。

引数
xX方向の位置。
yY方向の位置。

TnbDrawingContainer.h411 行目に定義があります。