'배경'에 해당되는 글 1건

  1. 2007/09/01 vc++ 배경그리기

vc++ 배경그리기

개발/Visual Studio 2007/09/01 22:17 posted by zekill
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);

}
2007/09/01 22:17 2007/09/01 22:17
TAG ,