C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[39191] 폼에 paint이벤트로 그림을 그리는데 스크롤을 하고 싶습니다..
장동훈 [sousic] 1067 읽음    2005-02-20 20:07
안녕하세요... 다름이 아니라 제가 요즘 bmp파일을 로딩하여 Form에 그려주고 있습니다.(form의 색깔을 흰색으로 하고) 그런대 다름이 아니라 bmp파일이 폼의 영역보다 큰 파일을 가끔 로딩하여 주는데
안보니는 부분을 스크롤 할려고 스크롤 바를 올려 보고 해도 도통 스크롤은 되는데 이미지가 그대로 있더군여
어떻게 해야하는지 막막하더군여, 검색을 해보니 스크롤박스에 이미지 컴퍼넌트를 올려서 하라고 하는데

저는 bmp를 읽어서 이것을 다시 제 나름대로 포멧으로 저장하고 있습니다.
근데 변환과정에 큰이미지들은 스크롤이 나오지 않아 이렇게 질문드립니다..

->form에 그림 그려주는곳
void __fastcall TForm1::FormPaint(TObject *Sender)
{
    HDC hdc;

     Form1->Refresh(); //갱신부분(다시읽을시 화면 지움)

     hdc = GetDC(Form1->Handle); //폼의 핸들얻기

     BeginPaint(Form1->Handle,NULL); //깜빡임 방지
     bmp.DrawBitmapDC(hdc,Form1->Bevel1->Left,Form1->Bevel1->Top+40); //form의 핸들을 얻어서 표면에 그냥그림
     EndPaint(Form1->Handle,NULL);

     ReleaseDC(Form1->Handle,hdc);
}

이렇게 하는데.... drawbitmapdc에서 그리는 함수는

DrawBitmapDC(HDC hdc, UINT x, UINT y)
{
    HBITMAP            hbitmap;
    HDC                hdcmem;

    if(img == NULL)
    {
        return 1;
    }

    hbitmap = CreateDIBitmap(hdc,bmpih,CBM_INIT,img,
                        (BITMAPINFO *)bmpih,DIB_RGB_COLORS);
   
    if(hbitmap == NULL)
    {
        return 2;
    }

    hdcmem = CreateCompatibleDC(hdc);
    if(hdcmem == NULL)
    {
        return 3;
    }

    SelectObject(hdcmem,hbitmap);

    /*StretchBlt(hdc,x,y,bmpih->biWidth,bmpih->biHeight,hdcmem,
                0,0,bmpih->biWidth,bmpih->biHeight,SRCCOPY);*/
    BitBlt(hdc,x,y,bmpih->biWidth,bmpih->biHeight,
            hdcmem,0,0,SRCCOPY);
   
    DeleteObject(hbitmap);
    DeleteDC(hdcmem);

    return 0;
}
이렇게 동작을 합니다... mfc에서는 화면이 줄어들면


void CChildSpriterView::OnInitialUpdate()
{
    CScrollView::OnInitialUpdate();
    CSize sizeTotal;
    // TODO: calculate the total size of this view
    sizeTotal.cx = sizeTotal.cy = 100;
    SetScrollSizes(MM_TEXT, sizeTotal);
}
이함수로 화면 크키를 조정하여 스크롤이 되느것 같은데 빌더에서는 어떻게 햐야 하는지 모르겠습니다..

+ -

관련 글 리스트
39191 폼에 paint이벤트로 그림을 그리는데 스크롤을 하고 싶습니다.. 장동훈 1067 2005/02/20
39207     Re:폼에 paint이벤트로 그림을 그리는데 스크롤을 하고 싶습니다.. 김정식 1305 2005/02/21
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.