Ir para conteúdo
Fórum Script Brasil
  • 0

Coordenadas do Timage


eduardo.campelo

Pergunta

Pessoal gostaria de pegar as coordenadas x, y de um Timage, mas pra min so interessa as coordenadas do Timage, não do form nem da tela completa. somente Timage

tow usando esse codigo:

var

pt:tpoint;

begin

GetCursorPos(pt); // Pega a posição atual do mouse;

pt := ScreenToClient(pt);//converte a cordenada de tela pra cordenada do form

label1.caption := IntToStr(pt.x) + '|' + IntToStr(pt.y); //Mostra os valores das coordenadas do mouse

end;

aqui me retorna as coordenadas do form x,y . como eu faço pra pegar somente da imagem que esta contida no form ???

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0
como eu faço pra pegar somente da imagem que esta contida no form ???
Amigo, muitas vezes deixamos de fazer algo em programação, por não entender o Help ( socorro ) que esta em outra lingua ( no caso do delphi em ingles )

então se queremos as coordenadas de um componente em relação ao form, o proprio delphi nos dá a solução.... mas por não ser em nossa lingua, ficamos quebrando a cabeça para descobrir ... não é ? veja o help sobre:

BoundsRect property (TControl)

Specifies the bounding rectangle of the control, expressed in the coordinate system of the parent control.

Delphi syntax:

property BoundsRect: TRect;

C++ syntax:

__property Types::TRect BoundsRect = {read=GetBoundsRect, write=SetBoundsRect};

Description

Use BoundsRect as a quick way to obtain the pixel locations of all corners of the control all at once.

For example, the statement

R := Control.BoundsRect;

R = Control->BoundsRect;

corresponds to

R.Left := Control.Left;

R.Top := Control.Top;

R.Right := Control.Left + Control.Width;

R.Bottom := Control.Top + Control.Height;

R.Left = Control->Left;

R.Top = Control->Top;

R.Right = Control->Left + Control->Width;

R.Bottom = Control->Top + Control->Height;

The origin of the pixel coordinate system is in the top left corner of the parent window.

Note: A point is considered within the control’s bounds rectangle if it lies on the left or top side but not if it lies on the right or bottom side. That is, to be inside the bounds rectangle, the x-coordinate must be greater than or equal to BoundsRect.Left and less than BoundsRect.Right, and the y-coordinate must be greater than or equal to BoundsRect.Top and less than BoundsRect.Bottom.

a tradução seria essa:

Especifica o retângulo do controle, expressado no sistema de coordenada do controle pai.

Use BoundsRect como um modo rápido para obter os locais de pixel de todos os cantos do controle tudo de uma vez.

ou seja: voce pode usar o comando BoundsRect para obter as coordenadas dos cantos do controle ( no caso um componente Timage )

exemplo:

procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
  R: TRect;
begin

  r := image1.BoundsRect;

  label1.Caption := inttostr(R.Top); // posição em cima
  label2.Caption := inttostr(R.Left); // posição esquerda
  label3.Caption := inttostr(R.Right); // posição direita
  label4.Caption := inttostr(R.Bottom); // posição em baixo

end;

OBS: ao clicar no componente TImage, as posições se referem aos cantos do TImage em relação ao form onde esta inserido

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

vou explicar melhor meu caso, talvez meu erro não seja nem esse veja so:

Sincronizar 2 resoluções de tela diferentes

estou desenvolvendo um sistema de área de trabalho remota, tipo o Logmein,

está tudo beleza, o único problema é quando o servidor tem uma resolução diferente do cliente...

não sei o que esta acontecendo por que o click ta indo um pouco diferente la no servidor. não esta indo na mesma posiçao

uso assim :

procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,

Y: Integer);

begin

posx:=inttostr(mouse.CursorPos.x);

posy:= inttostr(mouse.CursorPos.y);

end;

// aki envio os dados que peguei do click.

Clientmouse.Socket.SendText('click'+'<'+posx+'>'+'['+posy+']');

do outro lado simulo o click com as coordenadas obtidas no caso. posx e posy. problema que o clique não esta sendo exato, clica um pouco abaixo e um pouco a esquerda do local correto.

ai não sei o que ta acontecendo.

help.....

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,2k
×
×
  • Criar Novo...