OnEraseBkgnd(CDC* pDC)
{
// TODO: Add your message handler code here and/or call default
CClientDC dc(this);
CDC memDC;
memDC.CreateCompatibleDC(&dc);
CBitmap *bmpImage;
bmpImage = CBitmap::FromHandle((HBITMAP)LoadImage(GetModuleHandle(NULL), "skin\\All player1.bmp", IMAGE_BITMAP,0,0,LR_CREATEDIBSECTION | LR_LOADFROMFILE | LR_DEFAULTSIZE ));
BITMAP bitmap;
::GetObject(*bmpImage, sizeof(BITMAP), &bitmap);
CBitmap* pOld = memDC.SelectObject(bmpImage);
memDC.SetBkMode(TRANSPARENT); // 배경을 투명하게 하게 한다.
memDC.SetTextColor(RGB(255, 255, 255));
//dc.BitBlt(0, 0, bitmap.bmWidth, bitmap.bmHeight, &memDC, 0, 0, SRCCOPY);
dc.SelectObject(pOld);
memDC.DeleteDC();
ReleaseDC(pDC);
Invalidate(false); // 컨트롤을 다시 그려주기 위해서 호출하였음
return CDialog::OnEraseBkgnd(pDC);
}
//뭐..대충 간단하게...이렇게도...
CRect rc;
GetClientRect(&rc);
CDC MemDC;
MemDC.CreateCompatibleDC(pDC);
CBitmap *bmpImage;
bmpImage = CBitmap::FromHandle((HBITMAP)LoadImage(GetModuleHandle(NULL), "Images\\BG.bmp", IMAGE_BITMAP, 0, 0,LR_CREATEDIBSECTION | LR_LOADFROMFILE ));
//BITMAP bitmap;
//::GetObject(*bmpImage, sizeof(BITMAP), &bitmap);
CBitmap* pbmpOld = MemDC.SelectObject( bmpImage );
pDC->BitBlt(0, 0, rc.right, rc.bottom, &MemDC, 0, 0, SRCCOPY);
MemDC.SelectObject( pbmpOld );
ReleaseDC(pDC);
//배경 패턴으로..반복시키기...
CClientDC dc(this);
CDC memDC;
memDC.CreateCompatibleDC(&dc);
CRect rect;
GetClientRect(&rect);
CBitmap *bmpImage;
bmpImage = CBitmap::FromHandle((HBITMAP)LoadImage(GetModuleHandle(NULL), "images\\전지현1.bmp", IMAGE_BITMAP,0,0,LR_CREATEDIBSECTION | LR_LOADFROMFILE | LR_DEFAULTSIZE ));
BITMAP bitmap;
::GetObject(*bmpImage, sizeof(BITMAP), &bitmap);
CBitmap* pOld = memDC.SelectObject(bmpImage);
memDC.SetBkMode(TRANSPARENT); // 배경을 투명하게 하게 한다.
memDC.SetTextColor(RGB(255, 255, 255));
int bmw, bmh ;
bmw = bitmap.bmWidth;
bmh = bitmap.bmHeight;
int xo=0, yo=0;
for (yo = 0; yo < rect.Height(); yo += bmh)
{
for (xo = 0; xo < rect.Width(); xo += bmw)
{
dc.BitBlt(xo, yo, rect.Width(), rect.Height(), &memDC, 0, 0, SRCCOPY);
}
}
dc.SelectObject(pOld);
memDC.DeleteDC();
ReleaseDC(pDC);
Invalidate(false); // 컨트롤을 다시 그려주기 위해서 호출하였음
//늘려서 찍는건 StrechBlt() -0-
//SDI 에서 배경찍기
제 목 [ㅁ] 314876 anecia@unitel.co.kr 314840 10 10
작 성 자 진용철(anecia)
첨부
파일
작성시각 2003-06-09 오전 5:34:29 조 회 수 249
글 분 류 VC++ 일반
안녕하세요?
FormView이면
OnPaint 함수에서
BitBlt 함수를 이용해 그려주시면 됩니다.
사용할 이미지는 리소스에 추가를 하시던가 파일을 로드해 주시구요.
로드하는 함수는 LoadImage를 이용하시면 됩니다.
파일인 경우...
hBMP = (HBITMAP)LoadImage(NULL, lpszFileName,
IMAGE_BITMAP, 0, 0,
LR_LOADFROMFILE | LR_CREATEDIBSECTION | LR_DEFAULTSIZE);
리소스인 경우...
hBMP = (HBITMAP)LoadImage(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_BITMAP2),
IMAGE_BITMAP, 0, 0,
LR_CREATEDIBSECTION | LR_DEFAULTSIZE );
예제 입니다. 아래 함수는 비트맵 파일 lpszFileName을 원하는 DC의 원하는 좌표에
그립니다.
폼뷰의 OnPaint에서
CPaintDC dc(this); 하신다음
DrawBMP("test.bmp", &dc, 0, 0, SRCCOPY); 해보세요.
void DrawBMP(LPCTSTR lpszFileName, CDC *pDC, int nX, int nY, DWORD dwRop)
{
CDC memDC;
CBitmap bmp, *pOldBmp;
HBITMAP hBMP;
BITMAP bm;
hBMP = (HBITMAP)LoadImage(NULL, lpszFileName,
IMAGE_BITMAP, 0, 0,
LR_LOADFROMFILE | LR_CREATEDIBSECTION | LR_DEFAULTSIZE);
/*
hBMP = (HBITMAP)LoadImage(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_BITMAP2),
IMAGE_BITMAP, 0, 0,
LR_CREATEDIBSECTION | LR_DEFAULTSIZE );
*/
bmp.Attach(hBMP);
bmp.GetBitmap(&bm);
memDC.CreateCompatibleDC(pDC);
pOldBmp = memDC.SelectObject(&bmp);
pDC->BitBlt(nX, nY, bm.bmWidth, bm.bmHeight, &memDC, 0, 0, dwRop);
memDC.SelectObject(pOldBmp);
}
{
// TODO: Add your message handler code here and/or call default
CClientDC dc(this);
CDC memDC;
memDC.CreateCompatibleDC(&dc);
CBitmap *bmpImage;
bmpImage = CBitmap::FromHandle((HBITMAP)LoadImage(GetModuleHandle(NULL), "skin\\All player1.bmp", IMAGE_BITMAP,0,0,LR_CREATEDIBSECTION | LR_LOADFROMFILE | LR_DEFAULTSIZE ));
BITMAP bitmap;
::GetObject(*bmpImage, sizeof(BITMAP), &bitmap);
CBitmap* pOld = memDC.SelectObject(bmpImage);
memDC.SetBkMode(TRANSPARENT); // 배경을 투명하게 하게 한다.
memDC.SetTextColor(RGB(255, 255, 255));
//dc.BitBlt(0, 0, bitmap.bmWidth, bitmap.bmHeight, &memDC, 0, 0, SRCCOPY);
dc.SelectObject(pOld);
memDC.DeleteDC();
ReleaseDC(pDC);
Invalidate(false); // 컨트롤을 다시 그려주기 위해서 호출하였음
return CDialog::OnEraseBkgnd(pDC);
}
//뭐..대충 간단하게...이렇게도...
CRect rc;
GetClientRect(&rc);
CDC MemDC;
MemDC.CreateCompatibleDC(pDC);
CBitmap *bmpImage;
bmpImage = CBitmap::FromHandle((HBITMAP)LoadImage(GetModuleHandle(NULL), "Images\\BG.bmp", IMAGE_BITMAP, 0, 0,LR_CREATEDIBSECTION | LR_LOADFROMFILE ));
//BITMAP bitmap;
//::GetObject(*bmpImage, sizeof(BITMAP), &bitmap);
CBitmap* pbmpOld = MemDC.SelectObject( bmpImage );
pDC->BitBlt(0, 0, rc.right, rc.bottom, &MemDC, 0, 0, SRCCOPY);
MemDC.SelectObject( pbmpOld );
ReleaseDC(pDC);
//배경 패턴으로..반복시키기...
CClientDC dc(this);
CDC memDC;
memDC.CreateCompatibleDC(&dc);
CRect rect;
GetClientRect(&rect);
CBitmap *bmpImage;
bmpImage = CBitmap::FromHandle((HBITMAP)LoadImage(GetModuleHandle(NULL), "images\\전지현1.bmp", IMAGE_BITMAP,0,0,LR_CREATEDIBSECTION | LR_LOADFROMFILE | LR_DEFAULTSIZE ));
BITMAP bitmap;
::GetObject(*bmpImage, sizeof(BITMAP), &bitmap);
CBitmap* pOld = memDC.SelectObject(bmpImage);
memDC.SetBkMode(TRANSPARENT); // 배경을 투명하게 하게 한다.
memDC.SetTextColor(RGB(255, 255, 255));
int bmw, bmh ;
bmw = bitmap.bmWidth;
bmh = bitmap.bmHeight;
int xo=0, yo=0;
for (yo = 0; yo < rect.Height(); yo += bmh)
{
for (xo = 0; xo < rect.Width(); xo += bmw)
{
dc.BitBlt(xo, yo, rect.Width(), rect.Height(), &memDC, 0, 0, SRCCOPY);
}
}
dc.SelectObject(pOld);
memDC.DeleteDC();
ReleaseDC(pDC);
Invalidate(false); // 컨트롤을 다시 그려주기 위해서 호출하였음
//늘려서 찍는건 StrechBlt() -0-
//SDI 에서 배경찍기
제 목 [ㅁ] 314876 anecia@unitel.co.kr 314840 10 10
작 성 자 진용철(anecia)
첨부
파일
작성시각 2003-06-09 오전 5:34:29 조 회 수 249
글 분 류 VC++ 일반
안녕하세요?
FormView이면
OnPaint 함수에서
BitBlt 함수를 이용해 그려주시면 됩니다.
사용할 이미지는 리소스에 추가를 하시던가 파일을 로드해 주시구요.
로드하는 함수는 LoadImage를 이용하시면 됩니다.
파일인 경우...
hBMP = (HBITMAP)LoadImage(NULL, lpszFileName,
IMAGE_BITMAP, 0, 0,
LR_LOADFROMFILE | LR_CREATEDIBSECTION | LR_DEFAULTSIZE);
리소스인 경우...
hBMP = (HBITMAP)LoadImage(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_BITMAP2),
IMAGE_BITMAP, 0, 0,
LR_CREATEDIBSECTION | LR_DEFAULTSIZE );
예제 입니다. 아래 함수는 비트맵 파일 lpszFileName을 원하는 DC의 원하는 좌표에
그립니다.
폼뷰의 OnPaint에서
CPaintDC dc(this); 하신다음
DrawBMP("test.bmp", &dc, 0, 0, SRCCOPY); 해보세요.
void DrawBMP(LPCTSTR lpszFileName, CDC *pDC, int nX, int nY, DWORD dwRop)
{
CDC memDC;
CBitmap bmp, *pOldBmp;
HBITMAP hBMP;
BITMAP bm;
hBMP = (HBITMAP)LoadImage(NULL, lpszFileName,
IMAGE_BITMAP, 0, 0,
LR_LOADFROMFILE | LR_CREATEDIBSECTION | LR_DEFAULTSIZE);
/*
hBMP = (HBITMAP)LoadImage(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_BITMAP2),
IMAGE_BITMAP, 0, 0,
LR_CREATEDIBSECTION | LR_DEFAULTSIZE );
*/
bmp.Attach(hBMP);
bmp.GetBitmap(&bm);
memDC.CreateCompatibleDC(pDC);
pOldBmp = memDC.SelectObject(&bmp);
pDC->BitBlt(nX, nY, bm.bmWidth, bm.bmHeight, &memDC, 0, 0, dwRop);
memDC.SelectObject(pOldBmp);
}