Fórum TImage - Não consigo pegar as cordenadas corretas #349378
22/11/2007
0
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
Curtir tópico
+ 0
Responder
Posts
22/11/2007
Marcos.gandin
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.
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)