|
적어준 코드가 문제가 좀 있는데 일단 그려진다고는 하니 이건 패스하고...
그리는 부분을 폼의 Canvas를 사용하셨네요.
Image1->Canvas 로 바꿔보세요.
쿼드콥터헬기 님이 쓰신 글 :
: void __fastcall TForm2::Image1MouseUp(TObject *Sender, TMouseButton Button,
: TShiftState Shift, int X, int Y)
: {
: TPoint pp;
:
: GetCursorPos(&pp);
: pp = Image1->ScreenToClient(pp);
:
: int itRed = Image1->Canvas->Pixels[X][Y] & 0xFF,
: itGreen = Image1->Canvas->Pixels[X][Y] >> 8 & 0xFF,
: itBlue = Image1->Canvas->Pixels[X][Y] >> 16 & 0xFF;
:
: Panel1->Caption = Format("%d" , ARRAYOFCONST(((int)itRed)));
: Panel2->Caption = Format("%d" , ARRAYOFCONST(((int)itGreen)));
: Panel3->Caption = Format("%d" , ARRAYOFCONST(((int)itBlue)));
:
: // 드래그 중이었으면 이전에 그린 그림을 영구적으로 그린다.
: if(Dragging)
: {
: Canvas->Pen->Mode = pmNotXor;
: Canvas->MoveTo(X, Y);
: Canvas->LineTo(X, Y);
:
: LastPoint.x = X;
: LastPoint.y = Y;
: }
: // 드래그를 종료한다.
: Dragging = false;
:
:
: }
: void __fastcall TForm2::Image1MouseDown(TObject *Sender,
: TMouseButton Button, TShiftState Shift, int X, int Y)
: {
: TPoint pp;
:
: GetCursorPos(&pp);
: pp = Image1->ScreenToClient(pp);
:
: // 왼쪽 마우스가 다운 된 경우만
: if (Shift.Contains(ssLeft))
: {
: // 최초 위치를 백업한다.
: FirstPoint.x = X;
: FirstPoint.y = Y;
: // 이전 위치도 최초 위치이다.
: LastPoint.x = X;
: LastPoint.y = Y;
: // 최초 위치로 펜의 위치를 옮긴다.
: Canvas->MoveTo(X, Y);
:
: Canvas->Pen->Mode = pmNotXor;
: Canvas->Brush->Style = bsClear;
: // 드래그 할 준비 완료
: Dragging = true;
: }
: }
: //---------------------------------------------------------------------------
:
: void __fastcall TForm2::Image1MouseMove(TObject *Sender, TShiftState Shift,
: int X, int Y)
: {
: TPoint pp;
:
: GetCursorPos(&pp);
: pp = Image1->ScreenToClient(pp);
:
: // 드래그 중이면 마우스 가는데로 그림을 그린다.
: if (Dragging && Shift.Contains(ssLeft))
: {
: // 펜의 모드를 결정한다.
: Canvas->Pen->Mode = pmNotXor;
: Canvas->Brush->Style = bsClear;
: // 이전에 그린 임시 라인을 삭제한다.
: //Canvas->MoveTo(X, Y);
: //Canvas->LineTo(X, Y);
: // 새로 임시 라인을 그린다.
: Canvas->MoveTo(X, Y);
: Canvas->LineTo(X, Y);
: // 현재 지점을 백업한다.
: LastPoint.x = X;
: LastPoint.y = Y;
: }
: }
: 이렇게 나와 있는 코딩 했는데 마우스 좌표가 이상한 거 같아요
: 일단 GetCusorPos로 했다가 안되서 이미지 함수에 있는 x,y로 했습니다. 결과는 똑같구요
: 현상이 그릴때 현재 마우스 위치보다 몇백 정도 위에 그려지더라고요
: ui는 폼가장위에 메뉴바가 있구요
: 그 밑에 바로 이미지가 있습니다
|