58 const SIZE& size = bi.
GetSize();
59 int cx = size.cx * (max - par) / max;
60 int cy = size.cy * (max - par) / max;
61 bi.
Insert(-cx, -cy, overBmp, SRCCOPY, size.cx + cx * 2, size.cy + cy * 2);
112 const SIZE& size = bi.
GetSize();
113 int cx = size.cx * (max - par) / max;
114 int cy = size.cy * (max - par) / max;
119 else if ( m_pos >= 4 )
125 case 2: cx = 0;
break;
126 case 1: cx = -cx;
break;
128 bi.
Insert(cx, cy, overBmp, SRCCOPY);
183 ::SelectClipRgn(dc, hRgn);
186 ::SelectClipRgn(dc, NULL);
223 HRGN rgn = ::CreateRectRgn(0, 0, size.cx, size.cy);
224 int cx = size.cx * (max - par) / max;
225 int cy = size.cy * (max - par) / max;
230 else if ( m_pos >= 4 )
236 case 2: cx = 0;
break;
237 case 1: cx = -cx;
break;
239 ::OffsetRgn(rgn, cx, cy);
279 mutable LPRGNDATA m_pRgnData;
294 size_t len = m_size * m_size;
295 if ( m_pRgnData == NULL )
297 m_rgnWork.
Resize(
sizeof(RGNDATAHEADER) +
sizeof(RECT) * len);
298 m_pRgnData =
reinterpret_cast<LPRGNDATA
>(m_rgnWork.
Ref());
299 LPRECT pRect =
reinterpret_cast<LPRECT
>(m_pRgnData->Buffer);
310 INDEX m = rand() % len;
311 Swap(pRect[i], pRect[m]);
313 m_pRgnData->rdh.dwSize =
sizeof(RGNDATAHEADER);
314 m_pRgnData->rdh.iType = RDH_RECTANGLES;
315 m_pRgnData->rdh.rcBound.left = 0;
316 m_pRgnData->rdh.rcBound.top = 0;
317 m_pRgnData->rdh.rcBound.right = size.cx;
318 m_pRgnData->rdh.rcBound.bottom = size.cy;
321 size_t c = len * par / max;
326 m_pRgnData->rdh.nRgnSize =
ToDword(
sizeof(RGNDATAHEADER) +
sizeof(RECT) * c);
327 m_pRgnData->rdh.nCount =
ToDword(c);
328 HRGN hTmpRgn = ::ExtCreateRegion(NULL, m_pRgnData->rdh.nRgnSize, m_pRgnData);
329 HRGN hRgn = ::CreateRectRgn(0, 0, 0, 0);
330 loop ( x, (size.cx / m_size) + 1 )
332 ::CombineRgn(hRgn, hRgn, hTmpRgn, RGN_OR);
333 ::OffsetRgn(hTmpRgn,
ToInt(m_size), 0);
335 ::CombineRgn(hTmpRgn, hRgn, NULL, RGN_COPY);
336 loop ( y, (size.cy / m_size) )
338 ::OffsetRgn(hTmpRgn, 0,
ToInt(m_size));
339 ::CombineRgn(hRgn, hRgn, hTmpRgn, RGN_OR);
341 _DeleteObject(hTmpRgn);
353 ASSERT0( size > 1,
"CRandomMaskWiper",
"1より大きい数値を指定してください。" );
359 if ( m_pRgnData != NULL )
#define loop(VAR, CNT)
loop構文.
virtual HRGN CreateMaskRgn(const SIZE &size, UINT par, UINT max) const =0
[作成] マスク領域作成.
virtual CBitmapHandle Wipe(CBitmapHandle baseBmp, CBitmapHandle overBmp, UINT par, UINT max) const
[変換] ワイプ.
bool IsEmpty(void) const
[確認] Empty状態確認.
bool Insert(int x, int y, const CBitmapImage &bmpimg, DWORD raster=SRCCOPY, int cx=0, int cy=0)
[挿入] イメージ挿入.
HDC GetDC(void)
[取得]デバイスコンテキストハンドル取得.
const SIZE & GetSize(void) const
[取得] イメージサイズ取得.
bool Set(int cx, int cy, COLORREF color=CLR_INVALID)
[設定] イメージ設定.
CBitmapHandle GetBitmapHandle(void)
[取得] ビットマップハンドル取得
bool ReleaseDC(void)
[設定] デバイスコンテキストハンドル返却.
bool Draw(HDC hdc, int x=0, int y=0) const
[処理] イメージ描画.
~CRandomMaskWiper(void)
デストラクタ
CRandomMaskWiper(size_t size=32)
コンストラクタ
virtual HRGN CreateMaskRgn(const SIZE &size, UINT par, UINT max) const
[作成] マスク領域作成.
virtual IBitmapWipable * Clone(void) const
[複製] クローン
virtual IBitmapWipable * Clone(void) const
[複製] クローン
virtual CBitmapHandle Wipe(CBitmapHandle baseBmp, CBitmapHandle overBmp, UINT par, UINT max) const
[変換] ワイプ.
CSlideMaskWiper(UINT p)
コンストラクタ
virtual HRGN CreateMaskRgn(const SIZE &size, UINT par, UINT max) const
2,4,6,8
virtual IBitmapWipable * Clone(void) const
[複製] クローン
virtual IBitmapWipable * Clone(void) const
[複製] クローン
virtual CBitmapHandle Wipe(CBitmapHandle baseBmp, CBitmapHandle overBmp, UINT par, UINT max) const
[変換] ワイプ.
CSlideWiper(UINT uPos=5)
コンストラクタ
void Resize(size_t l)
[設定] サイズ再設定
const TYP * Ref(void) const
[取得] ポインタ取得
DWORD ToDword(LPCSTR lpsz, int iBase=10)
[変換] INT変換(ASCII/SJIS用).
int ToInt(LPCSTR lpsz, int iBase=10)
[変換] INT変換(ASCII/SJIS用).
void Swap(T &t1, T &t2)
[変換] スワッパー.