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
[18899] 김상구님 답변 정말 감사합니다. 이제 해결 되었네요(내용무)
정기원 [] 721 읽음    2002-05-27 11:25
김상구.패패루 님이 쓰신 글 :
: 뭐 자세히 보지는 않았지만 원래 소스에서 잘 되던건, 백그라운드 이미지가 창에 Client 등으로 붙어 있는 경우였기 때문이겠네요.
: 문제는 Image->Left를 참조하는 부분인데, 원래 이미지의 좌표가 0,0인 경우에는 제대로 동작하겠죠.
: 그런데 백그라운드 이미지가 창의 전체를 덮지 않는 경우에는 얘기가 달라지죠.
: 만일 캔버스를 메인창의 것을 가져왔다면 당연히 제대로 동작하겠지만 이미지의 위치를 보정하게 해 놓고 정작 캔버스는 이미지의 것을 가져왔으니 이미지의 Left,Top좌표만큼 옵셋된 위치에 선이 그려지겠네요.
:
:
: 정기원 님이 쓰신 글 :
: : 감사합니다.
: : 저번에 이미지 콤포넌트들간에 라인을 긋고 이벤트에 따라
: : 색깔 변경하는것을 문의드렸고 가르켜주신데로 테스트 하니 잘 되더군요.
: : 그런데 실제 적용을 하니까 라인이 엉뚱한데서 그려지네요.
: : 이것때문에 또 몇일 고민하다가 다시 염치없이 올립니다.
: : 무엇이 문제인지 한번 보아 주세요. 결과를 화일로 첨부하였습니다. 차이점은
: : 테스트 환경과 적용환경은 똑 같고, 단지 테스트 환경은 새로운 폼을 생성하여 폼의 변화 없이
: : 사용하였고 또한 백그라운드 이미지(아래 소스에서 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         김상구님 답변 정말 감사합니다. 이제 해결 되었네요(내용무) 정기원 721 2002/05/27
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.