|
감사합니다.
저번에 이미지 콤포넌트들간에 라인을 긋고 이벤트에 따라
색깔 변경하는것을 문의드렸고 가르켜주신데로 테스트 하니 잘 되더군요.
그런데 실제 적용을 하니까 라인이 엉뚱한데서 그려지네요.
이것때문에 또 몇일 고민하다가 다시 염치없이 올립니다.
무엇이 문제인지 한번 보아 주세요. 결과를 화일로 첨부하였습니다. 차이점은
테스트 환경과 적용환경은 똑 같고, 단지 테스트 환경은 새로운 폼을 생성하여 폼의 변화 없이
사용하였고 또한 백그라운드 이미지(아래 소스에서 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가 잘 안되는지 엉뚱한곳에 그려집니다.
결과를 화일로 첨부하였습니다.
조언 부탁드립니다.
벌써 금요일의 밤입니다.
여기 들러시는 모든분들 좋은 주말 되십시요.
미리 답변에 감사 드립니다.
수고들 하십시요.
|