TImage - Não consigo pegar as cordenadas corretas
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 é:
O que eu estou fazendo de errado?
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
Curtidas 0
Respostas
Marcos.gandin
22/11/2007
Pessoal...
Já consegui achar o erro.
eu modifiquei a linha:
por:
Assim eu consigo as coordenadas do mouse, ao invés das coordenadas da janela.
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