TImage - Não consigo pegar as cordenadas corretas

Delphi

22/11/2007

Pessoal, eu ainda estou com problemas na manipulação de imagens.

Eu tenho um Form aonde coloquei um componente TPanel e ajustei a propriedade [b:ad6d40116e]BevelOuter=bvNone[/b:ad6d40116e] e nele coloquei um componente TImage aonde ajustei a propriedade [b:ad6d40116e]Align=alClient[/b:ad6d40116e], eu abro uma imagem (que pode ser jpg ou bmp) e tenho que capturar as coordenadas dessa imagem quando eu clicar sobre ela. Eu vou armazenando essas coordenadas num StringGrid, só que quando eu clico no canto superior esquerdo dessa imagem, ele me retorna os valores de X=240 e Y=270, o que deveria na verdade me retornar X=0 e Y=0.

O código que eu estou utilizando para capturar essas coordenadas é:

procedure TfrmSegmentacao.ImageMouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
  Pt: TPoint;
  i : Integer;
begin
  i := StringGrid1.RowCount-1;
  GetCursorPos(Pt);
  StringGrid1.Cells[0,i] := IntToStr(Pt.X);
  StringGrid1.Cells[1,i] := IntToStr(Pt.Y);
  i := i + 1;

  StringGrid1.RowCount := StringGrid1.RowCount + 1;

  //coloca um ponto na coordenada 
  pt := Image.ScreenToClient(pt);
  if Button = mbLeft then
  begin
    Image.Picture.Bitmap.Canvas.Brush.Color := clBlue;
    Image.Picture.Bitmap.Canvas.Brush.Style := bsSolid;
    Image.Picture.Bitmap.Canvas.Ellipse(pt.X-4,pt.Y-4,pt.X+4,pt.Y+4);
  end;
end;


O que eu estou fazendo de errado?


Marcos.gandin

Marcos.gandin

Curtidas 0

Respostas

Marcos.gandin

Marcos.gandin

22/11/2007

Pessoal...

Já consegui achar o erro.

eu modifiquei a linha:

GetCursorPos(Pt);


por:

Pt.X := X;
  Pt.Y := Y;


Assim eu consigo as coordenadas do mouse, ao invés das coordenadas da janela.


GOSTEI 0
POSTAR