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
[11975] Image1->Canvas->CopyRect()시 오류가 발생합니다. ㅠ_ㅠ
Blankas [] 846 읽음    2001-10-22 20:02
안녕하세요?
이미지 제어를 잘 못하다보니 오류가 자꾸 발생해서요.. 이렇게 글을 적어올립니다. ㅠ_ㅠ
상황은 이렇습니다;;

먼저 Form1에 TImage 타입의 Image1을 만들고, 크기를 Width=500, Height=3000으로 선언했습니다.
여기까지는 콤포넌트를 직접 끌어놓아 만들었구요,
실제 코딩은 Form1의 OnActivate() 이벤트에 다음과 같이 했습니다.


//---------------------------------------------------------------------------
void __fastcall TForm1::FormActivate(TObject *Sender)
{
    Graphics::TBitmap *TempBuffer;
   
    TempBuffer=new Graphics::TBitmap;
    TempBuffer->LoadFromFile("c:\\dot.bmp");
    Image1->Canvas->CopyRect(Rect(100, 100, 101, 2500), TempBuffer->Canvas, TempBuffer->Canvas->ClipRect);

    if(TempBuffer!=NULL)
    {
        delete TempBuffer;
        TempBuffer=NULL;
    }
}
//---------------------------------------------------------------------------


dot.bmp라는 이미지는 1X1 크기의 파란색 점입니다. 이 점을 길이 2500짜리 라인으로 그으려는 것입니다.
위의 내용을 실행하면 치명적인 오류가 발생하면서 프로그램이 정지합니다.
제가 윈도우 프로그래밍에 굉장히 취약하다보니 이유를 모르겠네요;;;
헬프만 보고 해본거라 TBitmap이나 Canvas의 사용에 문제가 있는 것인지도 모르겠습니다;;;


그럼 고수분들의 도움을 기다리겠습니다. ㅠ_ㅠ




추.
상황을 보면 라인의 길이가 2000을 넘어갈 때 오류가 나는것 같습니다.
아마도 메모리 경계를 넘어가는게 아닐까 하고 있습니다요;;;;

+ -

관련 글 리스트
11975 Image1->Canvas->CopyRect()시 오류가 발생합니다. ㅠ_ㅠ Blankas 846 2001/10/22
12065     Re:Image1->Canvas->CopyRect()시 오류가 발생합니다. ㅠ_ㅠ 이정훈 1000 2001/10/24
11980     되던데요~~ ㅡㅡ; 박재욱.사탕 732 2001/10/22
11995         감사합니다. Blankas 758 2001/10/23
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.