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
[39207] Re:폼에 paint이벤트로 그림을 그리는데 스크롤을 하고 싶습니다..
김정식 [freddicola] 1305 읽음    2005-02-21 19:22
스크롤 박스에 이미지컴포넌트를 넣는것 보다는
이미지 컴포넌트를 얹어 놓고, 매번 그림이 로드 될때 마다, 이미지 컴포넌트의
사이즈를 리사이즈 해 주는 것이 효율적일것 같군요.
그리고 DC를 건드는 부분에서는, TImage::Picture->Canvas로 작업하는것이 좋을것 같습니다.
더불어, TForm::VertScrollBar 와 TForm::HorzScrollBar를 상황에 맞게 Visible 해주면 될것 같습니다.
깜빡이지 않게 하는 BeginPaint와 같은 부분은 신경쓰지 않아도 되는 간편한 방법이지요.
도움이 되시길 바랍니다.

장동훈 님이 쓰신 글 :
: 안녕하세요... 다름이 아니라 제가 요즘 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이벤트로 그림을 그리는데 스크롤을 하고 싶습니다.. 장동훈 1068 2005/02/20
39207     Re:폼에 paint이벤트로 그림을 그리는데 스크롤을 하고 싶습니다.. 김정식 1305 2005/02/21
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.