49 void NewImage(
size_t count,
int cx,
int cy,
int ph = 10)
54 m_image.
Set(m_size.cx, m_size.cy, RGB(0, 0, 0));
55 m_blackImage.
Set(m_size.cx, m_size.cy);
56 m_blackImage.
GradationFill(RGB(120, 0, 0), RGB(0, 0, 120),
true);
58 ::srand(::GetTickCount());
61 m_pieces[i].Init(m_size, ph);
74 m_pieces[i].Next(m_size);
94 HDC dc = m_image.
GetDC();
95 m_blackImage.
BitBlt(dc, 0, 0);
98 const TPiece& P = m_pieces[i];
99 HBRUSH b = ::CreateSolidBrush(P.color);
102 HGDIOBJ old = ::SelectObject(dc, b);
103 ::RoundRect(dc, P.pos.x, P.pos.y, P.pos.x + P.size, P.pos.y + P.size, P.size, P.size);
104 ::SelectObject(dc, old);
116 void Init(
const SIZE& sz,
int sizeMax = 4)
119 size = (::rand() % sizeMax) + sizeMax;
120 pos.x = ::rand() % (sz.cx - size);
121 pos.y = ::rand() % (sz.cy - size);
122 color = RGB(::rand() & 0xFF, ::rand() & 0xFF, ::rand() & 0xFF);
123 vector.x = ((::rand() % 7) + 1) * ((::rand() & 1) == 0 ? 1 : -1);
124 vector.y = ((::rand() % 7) + 1) * ((::rand() & 1) == 0 ? 1 : -1);
126 void Next(
const SIZE& sz)
132 vector.x = -vector.x;
134 else if ( pos.x > sz.cx - size )
136 pos.x -= (pos.x - (sz.cx - size)) * 2;
137 vector.x = -vector.x;
143 vector.y = -vector.y;
145 else if ( pos.y > sz.cy - size)
147 pos.y -= (pos.y - (sz.cy - size)) * 2;
148 vector.y = -vector.y;
#define loop(VAR, CNT)
loop構文.
bool GradationFill(COLORREF color1, COLORREF color2, EDirection direction, const RECT *pRect=NULL)
[処理] グラデーション描画.
bool BitBlt(HDC hdc, int x, int y, DWORD raster=SRCCOPY) const
[表示] イメージ描画.
HDC GetDC(void)
[取得]デバイスコンテキストハンドル取得.
bool Set(int cx, int cy, COLORREF color=CLR_INVALID)
[設定] イメージ設定.
bool ReleaseDC(void)
[設定] デバイスコンテキストハンドル返却.
CDummyAnimater(void)
コンストラクタ
void NewImage(size_t count, int cx, int cy, int ph=10)
[作成] 新画像作成.
void Next(void)
[作成] 次画像作成.
const CBitmapImage & Get(void) const
[取得] 取得.
size_t GetSize(void) const
[取得] サイズ取得
void Resize(size_t l)
[設定] サイズ再設定