|
1.¿ä¾à 256»ö BitmapÀ» DirectDrawÀÇ Blt()ÇÒ¶§ °£ÆíÈ÷ »ç¿ëÇÏ´Â ¹æ¹ý¿¡ ´ëÇØ¼ ¾Ë¾Æº¸°Ú½À´Ï´Ù. 2.º»¹® DirectDraw¿¡¼ 256»ö BitmapÀ» »ç¿ëÇÏ¿© ºí¸®Æ® ½ÃŰ´Â °æ¿ì, System DisplayModeÀÇ Bit¼ö(8Bit, 16Bit...)¿¡ µû¶ó ¿©·¯°¡ÁöÀÇ Ã³¸®¸¦ ÇØÁÖ¾î¾ß À̹ÌÁö°¡ ±úÁöÁö ¾Ê½À´Ï´Ù. ±×¸®°í ÆÈ·¡Æ®µµ ¸ðµÎ ¸ÂÃß¾î ÁÖ¾î¾ß ÇÏÁö¿ä. ÀÌ·²°æ¿ì À̹ÌÁö¸¦ ·ÎµåÇÑ ÈÄ StretchDIBits()ÇÔ¼ö¸¦ »ç¿ëÇÏ¿© OffScreen¿¡ CopyÇÑ ÈÄ BackSurface¿¡ Blt()½Ã۸é ÀÚµ¿À¸·Î ÀÌ ¸ðµç ¹®Á¦Á¡µéÀ» ÇØ°áÇØ Áֱ⠶§¹®¿¡ ¾ÆÁÖ °£ÆíÇÕ´Ï´Ù. ¹°·Ð ÆÈ·¡Æ® 󸮵µÇØÁÝ´Ï´Ù. ÁÖÀÇÇÒ Á¡Àº ·ÎµåÇÒ ¶§ Pitch°ªÀ» µð½ºÇ÷¹ÀÌ ¸ðµå¿¡ ¸Â°Ô ¼³Á¤ÇØ ÁÖ¾î¾ß ÇÕ´Ï´Ù. ´Ü, StretchDIBits()ÇÔ¼öÀÇ ¼Óµµ¸¸Å ´À·ÁÁö´Âµ¥ À̰ÍÀº À̹ÌÁö¸¦ LoadÇÒ¶§ Çѹø »ÓÀ̹ǷΠ½ÇÁ¦·Î À̹ÌÁö Ãâ·ÂºÎºÐÀÇ ¼Óµµ¿µÇâÀº ¾ø½À´Ï´Ù. 3.¿¹Á¦
//******* À̹ÌÁö ·Îµå ******************
Image->Load();
//******* Copy ************************
m_lpDDSImg = CopyImage(&Image);
//******* ·ÎµåÇÑ À̹ÌÁö¸¦ StretchDIBits()¸¦ ÀÌ¿ëÇÏ¿© CopyÇϱâ
void CopyImage(CDIB *pImg);
HDC hdc;
DDSURFACEDESC2 ddsd;
HRESULT hr;
LPDIRECTDRAWSURFACE7 lpdds;
int nWidth = pImg->GetWidth(); //À̹ÌÁöÀÇ °¡·Î ³ÐÀÌ
int nHeight = pImg->GetHeight(); //À̹ÌÁöÀÇ ¼¼·Î ³ÐÀÌ
ddsd.dwSize = sizeof(ddsd);
ddsd.dwFlags = DDSD_HEIGHT | DDSD_WIDTH;
//À̹ÌÁöÀÇ Å©±â¿¡ ¸Â°Ô OffScreen¸¸µé±â
lpdds = ddCreateOffScreen(nWidth, nHeight, 0, 0);
if(lpdds == NULL)
return NULL;
lpdds->Restore();
lpdds->GetSurfaceDesc(&ddsd);
hr = lpdds->GetDC(&hdc); //ÇÚµé ¾ò±â
if(hr == DD_OK)
{
// Copy Çϱâ
StretchDIBits(hdc,
0, // dest x
0, // dest y
nWidth, // dest width
nHeight, // dest height
0, // src x
0, // src y
nWidth, // src width
nHeight, // src height
pDibSpr->m_pBits, //bits
pDibSpr->m_pBmpInfo,
DIB_RGB_COLORS, // options
SRCCOPY); // rop
lpdds->ReleaseDC(hdc);
}
//************** offscreenÀ» BackSurface¿¡ Blt()½Ã۱â *****
if(FAILED(m_lpBackSurface->Blt(&rDest, m_lpDDSImage,
&rSrc, DDBLT_WAIT|DDBLT_KEYSRC, NULL);
return FALSE;
- 2001.08.13 Smile Seo - |