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
[18856] 유영인님! 테스트는 잘 되는데 실제 적용시는 잘 안되요? 무엇이 문제인지요
정기원 [] 774 읽음    2002-05-24 19:35
감사합니다.
저번에 이미지 콤포넌트들간에 라인을 긋고 이벤트에 따라
색깔 변경하는것을 문의드렸고 가르켜주신데로 테스트 하니 잘 되더군요.
그런데 실제 적용을 하니까 라인이 엉뚱한데서 그려지네요.
이것때문에 또 몇일 고민하다가 다시 염치없이 올립니다.
무엇이 문제인지 한번 보아 주세요. 결과를 화일로 첨부하였습니다. 차이점은
테스트 환경과 적용환경은 똑 같고, 단지 테스트 환경은 새로운 폼을 생성하여 폼의 변화 없이
사용하였고 또한 백그라운드 이미지(아래 소스에서 Image1를 나타냄)를 있는그대로 사용하였습니다.
실제 적용화면은 폼의 크기와 백그라운드 이미지(아래 소스에서 image를 나타냄)를 줄여서 작업 했습니다. 
테스트한 소스와 실제 적용한 소스 일부를 올립니다. 한번 보아 주세요.

--- 테스트 한 소스 --->
    TCanvas *pCanvas = Image2->Canvas;
    TCanvas *pCanvas2 = Image3->Canvas;
     
    Image1->Picture->Bitmap->PixelFormat = pf24bit;

    pCanvas->Brush->Color = clGreen;
    pCanvas->Brush->Style = bsSolid;
    pCanvas->Rectangle(0,0,Image2->Width, Image2->Height);

    pCanvas2->Brush->Color = clGreen;
    pCanvas2->Brush->Style = bsSolid;
    pCanvas2->Rectangle(0,0,Image3->Width, Image3->Height);

    Image1->Canvas->Pen->Mode   = pmCopy;
    Image1->Canvas->Pen->Style = psSolid;
    Image1->Canvas->Pen->Color = clBlack;
    Image1->Canvas->Pen->Width = 2;

    Image1->Canvas->MoveTo(Image2->Left + Image2->Width/2, Image2->Top + Image2->Height);
    Image1->Canvas->LineTo(Image3->Left + Image3->Width/2, Image3->Top );
<결과> : 성공
<-----------------------------------------------------
---- 실제 적용 코드 ---->
        TCanvas *pCanvas = Image1->Canvas;
        TCanvas *pCanvas1 = Image2->Canvas;
        TCanvas *pCanvas2 = Image3->Canvas;
   
        image->Picture->Bitmap->PixelFormat = pf24bit;

        pCanvas->Brush->Color = clGreen;
        pCanvas->Brush->Style = bsSolid;
        pCanvas->Rectangle(0,0,Image1->Width, Image1->Height);

        pCanvas1->Brush->Color = clGreen;
        pCanvas1->Brush->Style = bsSolid;
        pCanvas1->Rectangle(0,0,Image2->Width, Image2->Height);

        pCanvas2->Brush->Color = clGreen;
        pCanvas2->Brush->Style = bsSolid;
        pCanvas2->Rectangle(0,0,Image3->Width, Image3->Height);

        image->Canvas->Pen->Mode = pmCopy;
        image->Canvas->Pen->Style = psSolid;
        image->Canvas->Pen->Color = clGreen;
        image->Canvas->Pen->Width = 1;

       
        //서울<->경인간 연결
        image->Canvas->MoveTo((Image1->Left + (Image1->Width/2)), (Image1->Top + Image1->Height));
        image->Canvas->LineTo((Image2->Left + (Image2->Width/2)), Image2->Top );
        //서울<->강원간 연결
        image->Canvas->MoveTo(Image1->Left + Image1->Width, Image1->Top + Image1->Height/2);
        image->Canvas->LineTo(Image3->Left, Image3->Top  + Image3->Height/2);

<위 코드의 결과 >
  - 위 함수의 MoveTo와 LineTo가 잘 안되는지 엉뚱한곳에 그려집니다.
    결과를 화일로 첨부하였습니다.

   조언 부탁드립니다.

벌써 금요일의 밤입니다.
여기 들러시는 모든분들 좋은 주말 되십시요.

미리 답변에 감사 드립니다.
수고들 하십시요.

+ -

관련 글 리스트
18856 유영인님! 테스트는 잘 되는데 실제 적용시는 잘 안되요? 무엇이 문제인지요 정기원 774 2002/05/24
18863     Re:켄버스를 엉뚱한 곳에서 가져왔으니 당연히 그렇게 되겠죠.. 김상구.패패루 740 2002/05/25
18899         김상구님 답변 정말 감사합니다. 이제 해결 되었네요(내용무) 정기원 722 2002/05/27
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.