|
김상구.패패루 님이 쓰신 글 :
: 뭐 자세히 보지는 않았지만 원래 소스에서 잘 되던건, 백그라운드 이미지가 창에 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가 잘 안되는지 엉뚱한곳에 그려집니다.
: : 결과를 화일로 첨부하였습니다.
: :
: : 조언 부탁드립니다.
: :
: : 벌써 금요일의 밤입니다.
: : 여기 들러시는 모든분들 좋은 주말 되십시요.
: :
: : 미리 답변에 감사 드립니다.
: : 수고들 하십시요.
|