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 é:

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

Responder

Posts

22/11/2007

Marcos.gandin

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.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar