TNB Library
TnbBitmapDrawer.h
[詳解]
1#pragma once
11#include "TnbBitmapImage.h"
12#include "TnbDrawable.h"
13
14
15
16//TNB Library
17namespace TNB
18{
19
20
21
35{
36 DEFSUPER(IDrawable);
37protected:
38
40public:
41
47 {
48 }
49
55 virtual IDrawable* Clone(void) const
56 {
57 return new CBitmapDrawer(m_bmp);
58 }
59
67 virtual bool GetSize(SIZE& _size) const
68 {
69 return m_bmp.GetSize(_size);
70 }
71
80 virtual bool Resize(const SIZE& size)
81 {
82 return false;
83 }
84
92 virtual void Draw(HDC dc, int x = 0, int y = 0) const
93 {
94#ifndef _WIN32_WCE
95 HBITMAP h = m_bmp;
96 ::DrawState(dc, NULL, NULL, reinterpret_cast<LPARAM>(h), 0, x, y, 0, 0, DST_BITMAP);
97#else
98 HBITMAP h = m_bmp;
99 CBitmapHandle::Draw(dc, h, x, y);
100#endif
101 }
102
111 static CBitmapHandle ToBitmap(const IDrawable& draw, COLORREF color = CLR_INVALID)
112 {
113 CBitmapImage bi;
114 SIZE size;
115 if ( draw.GetSize(size) )
116 {
117 if ( bi.Set(size.cx, size.cy, color) )
118 {
119 HDC dc = bi.GetDC();
120 draw.Draw(dc);
121 bi.ReleaseDC();
122 }
123 }
124 return bi;
125 }
126};
127
128
129
130#ifndef _WIN32_WCE
144{
145 DEFSUPER(CBitmapDrawer);
146 UINT m_uExFlag;
147public:
148
157 CBitmapExDrawer(CBitmapHandle bmp, UINT uExFlag = DSS_NORMAL)
158 : _super(bmp), m_uExFlag(uExFlag)
159 {
160 }
161
167 virtual IDrawable* Clone(void) const
168 {
169 return new CBitmapExDrawer(m_bmp, m_uExFlag);
170 }
171
179 virtual void Draw(HDC dc, int x = 0, int y = 0) const
180 {
181 HBITMAP h = m_bmp;
182 ::DrawState(dc, NULL, NULL, reinterpret_cast<LPARAM>(h), 0, x, y, 0, 0, DST_BITMAP | m_uExFlag);
183 }
184};
185#endif //_WIN32_WCE
186
187
188
202{
203 DEFSUPER(CBitmapDrawer);
204 int m_parsent;
205 COLORREF m_color;
206public:
207
214 CSemitransparentBitmapDrawer(CBitmapHandle bmp, int par = 100, COLORREF color = CLR_INVALID)
215 : _super(bmp), m_parsent(par), m_color(color)
216 {
217 }
218
224 virtual IDrawable* Clone(void) const
225 {
226 return new CSemitransparentBitmapDrawer(m_bmp, m_parsent, m_color);
227 }
228
236 virtual void Draw(HDC dc, int x = 0, int y = 0) const
237 {
239 bi.SemitransparectBlt(dc, x, y, m_parsent, m_color);
240 }
241};
242
243
244
258{
259 DEFSUPER(CBitmapDrawer);
260 SIZE m_size;
261public:
262
268 CTileDrawer(const SIZE& size, CBitmapHandle bmp) : _super(bmp), m_size(size)
269 {
270 }
271
279 CTileDrawer(const SIZE& size, const IDrawable& draw, COLORREF color = CLR_INVALID)
280 : _super(CBitmapDrawer::ToBitmap(draw, color)), m_size(size)
281 {
282 }
283
289 virtual IDrawable* Clone(void) const
290 {
291 return new CTileDrawer(m_size, m_bmp);
292 }
293
301 virtual bool GetSize(SIZE& _size) const
302 {
303 _size = m_size;
304 return ! m_bmp.IsNull();
305 }
306
314 virtual void Draw(HDC dc, int x = 0, int y = 0) const
315 {
317 RECT rect = { x, y, x + m_size.cx, y + m_size.cy };
318 bi.DrawTile(dc, rect);
319 }
320};
321
322
323
338{
339 DEFSUPER(CNullDrawer);
340 COLORREF m_color;
341 int m_parsent;
342public:
343
350 CSemitransparentBoxFillDrawer(const SIZE& size, COLORREF color, int par = 100)
351 : _super(size), m_color(color), m_parsent(par)
352 {
353 }
354
361 CSemitransparentBoxFillDrawer(COLORREF color, int par = 100)
362 : _super(), m_color(color), m_parsent(par)
363 {
364 }
365
371 virtual IDrawable* Clone(void) const
372 {
373 return new CSemitransparentBoxFillDrawer(m_size, m_color, m_parsent);
374 }
375
383 virtual void Draw(HDC dc, int x = 0, int y = 0) const
384 {
385 CBitmapImage bi;
386 bi.Set(m_size.cx, m_size.cy, m_color);
387 bi.AlphaBlend(dc, x, y, m_parsent);
388 }
389};
390
391
392
393};
394
ビットマップイメージ管理関係のヘッダ
描画情報関係のヘッダ
ビットマップ描画クラス
virtual void Draw(HDC dc, int x=0, int y=0) const
[描画] 描画.
CBitmapHandle m_bmp
ビットマップ
virtual bool Resize(const SIZE &size)
[設定] サイズ設定.
static CBitmapHandle ToBitmap(const IDrawable &draw, COLORREF color=CLR_INVALID)
[作成] ビットマップ作成.
CBitmapDrawer(CBitmapHandle bmp)
コンストラクタ
virtual bool GetSize(SIZE &_size) const
[取得] サイズ取得.
virtual IDrawable * Clone(void) const
[作成] クローン作成.
ビットマップ拡張描画クラス
virtual void Draw(HDC dc, int x=0, int y=0) const
[描画] 描画.
CBitmapExDrawer(CBitmapHandle bmp, UINT uExFlag=DSS_NORMAL)
コンストラクタ
virtual IDrawable * Clone(void) const
[作成] クローン作成.
HBITMAP型ハンドルハンドル
bool GetSize(SIZE &_size) const
[取得] ビットマップサイズ取得.
bool Draw(HDC hdc, int x=0, int y=0) const
[処理] イメージ描画.
ビットマップイメージ管理クラス
bool DrawTile(HDC hdc, const RECT &rect) const
[処理] イメージタイル描画.
HDC GetDC(void)
[取得]デバイスコンテキストハンドル取得.
bool Set(int cx, int cy, COLORREF color=CLR_INVALID)
[設定] イメージ設定.
bool ReleaseDC(void)
[設定] デバイスコンテキストハンドル返却.
bool SemitransparectBlt(HDC hdc, int x, int y, int parsent=100, COLORREF color=CLR_AUTOSELECT) const
[挿入] 半透明,透過イメージ描画.
bool AlphaBlend(HDC hdc, int x, int y, int parsent=100, int cx=0, int cy=0) const
[描画] 半透明処理付イメージ描画.
NULL描画クラス
Definition: TnbDrawable.h:106
SIZE m_size
サイズ
Definition: TnbDrawable.h:109
bool IsNull(void) const
[確認] NULLチェック
ビットマップ透過描画クラス
virtual void Draw(HDC dc, int x=0, int y=0) const
[描画] 描画.
CSemitransparentBitmapDrawer(CBitmapHandle bmp, int par=100, COLORREF color=CLR_INVALID)
コンストラクタ
virtual IDrawable * Clone(void) const
[作成] クローン作成.
透過塗りつぶし描画クラス
CSemitransparentBoxFillDrawer(COLORREF color, int par=100)
コンストラクタ
virtual void Draw(HDC dc, int x=0, int y=0) const
[描画] 描画.
CSemitransparentBoxFillDrawer(const SIZE &size, COLORREF color, int par=100)
コンストラクタ
virtual IDrawable * Clone(void) const
[作成] クローン作成.
タイル描画クラス
virtual void Draw(HDC dc, int x=0, int y=0) const
[描画] 描画.
CTileDrawer(const SIZE &size, CBitmapHandle bmp)
コンストラクタ
CTileDrawer(const SIZE &size, const IDrawable &draw, COLORREF color=CLR_INVALID)
コンストラクタ
virtual bool GetSize(SIZE &_size) const
[取得] サイズ取得.
virtual IDrawable * Clone(void) const
[作成] クローン作成.
TNB Library
Definition: TnbDoxyTitle.txt:2
描画情報インターフェース
Definition: TnbDrawable.h:37
virtual bool GetSize(SIZE &_size) const =0
[取得] サイズ取得.
virtual void Draw(HDC dc, int x=0, int y=0) const =0
[描画] 描画.