Recent

Author Topic: [Resolvido]-Pegar coordenadas de um pixel numa imagem  (Read 5923 times)

neodarkman

  • New Member
  • *
  • Posts: 35
[Resolvido]-Pegar coordenadas de um pixel numa imagem
« on: March 28, 2015, 02:20:24 pm »
Quando carrego uma imagem num Timage e pego as coordenadas pelo clic do mouse, o sistema me retorna as coordenadas do ponteiro do mouse, mas eu queria pegar as coordenadas reais daquele ponto em particular da imagem original ONDE se encontra o mouse. Como faço isso?
« Last Edit: March 29, 2015, 01:31:07 am by neodarkman »

typo

  • Hero Member
  • *****
  • Posts: 3051
Re: Pegar coordenadas de um pixel numa imagem
« Reply #1 on: March 28, 2015, 02:39:05 pm »
Code: [Select]
procedure TForm1.Image1MouseDown(Sender :TObject; Button :TMouseButton;
  Shift :TShiftState; X, Y :Integer);
begin
  Image1.Picture.Bitmap.Canvas.Pixels[x,y] := clRed;
end; 

neodarkman

  • New Member
  • *
  • Posts: 35
Re: Pegar coordenadas de um pixel numa imagem
« Reply #2 on: March 28, 2015, 03:35:52 pm »
Code: [Select]
procedure TForm1.Image1MouseDown(Sender :TObject; Button :TMouseButton;
  Shift :TShiftState; X, Y :Integer);
begin
  Image1.Picture.Bitmap.Canvas.Pixels[x,y] := clRed;
end; 

Obrigado pela ajuda, mas eu quero é pegar as coordenadas (x,y) reais de um pixel da imagem, não apenas do mouse....

Minha imagem teste tem: 1024x718 (alturaxlargura) mas quando clico nas extremidades dela obtenho 417x291!!!!
Logo ela foi reduzida para caber no Timage... daí  o canvas.pixels parece não retornar as coordenadas reais dos pixels da imagem...

typo

  • Hero Member
  • *****
  • Posts: 3051
Re: Pegar coordenadas de um pixel numa imagem
« Reply #3 on: March 28, 2015, 04:26:41 pm »
Code: [Select]
ShowMessage(FloatToStr(Image1.Width / Image1.Picture.Bitmap.Width));

Se você está usando AutoSize, a imagem está aparecendo em tamnho real e o resultado dessa mensagem será 1. Se Stretch, o resultado será diferente de 1.

Do lado esquerdo você tem a largura do componente, do direito, a da imagem.
« Last Edit: March 28, 2015, 04:55:49 pm by typo »

typo

  • Hero Member
  • *****
  • Posts: 3051
Re: Pegar coordenadas de um pixel numa imagem
« Reply #4 on: March 28, 2015, 04:42:47 pm »
Code: [Select]
ShowMessage('O valor de X é ' + IntToStr(X) + '. A coordenada X mais próxima da imagem é:' + IntToStr(Round(
                           (Image1.Picture.Bitmap.Width / Image1.Width) * X)));
« Last Edit: March 28, 2015, 04:52:46 pm by typo »

neodarkman

  • New Member
  • *
  • Posts: 35
Re: Pegar coordenadas de um pixel numa imagem
« Reply #5 on: March 29, 2015, 01:30:37 am »
Code: [Select]
ShowMessage('O valor de X é ' + IntToStr(X) + '. A coordenada X mais próxima da imagem é:' + IntToStr(Round(
                           (Image1.Picture.Bitmap.Width / Image1.Width) * X)));
Olá...
Esse código resolveu para mim. Muito obrigado.
 :D :D :D

 

TinyPortal © 2005-2018