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

[resolvido] Uma Duvida Sobre Imagem


amauri_filho

Pergunta

Estou tentando montar um quebra-cabeça para um trabalho de escola, mais não consigo fazer com que a imagem se mova junto com o mouse.

Quando eu clico e arrasto o mouse, a imagem até se movimenta, porém ela não acompanha exatamente onde o mouse esta, ela fica meio longe e insiste em ficar voltando pro inicio do formulario!

alguém pode me ajudar?

Obrigado!

;) :blink: :rolleyes:

Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 0

Obrigado, agora estou colocando o código!

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  jpeg, ExtCtrls;

type
  TForm1 = class(TForm)
    Image1: TImage;
    procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Image1MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  mover: integer;
  Fdragging: Boolean;

implementation

{$R *.DFM}

procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  mover := 1;
end;

procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  mover := 2;
end;

procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  if mover=1 then
  begin
    Image1.Top := y-Image1.Width div 2;
    Image1.Left := x-Image1.Height div 2;
  end;
end;

end.

Editado por Micheus
Adicionado o delimitador de código [code] [/code]. Lembre-se de utilizá-lo para melhor visualização
Link para o comentário
Compartilhar em outros sites

  • 0
Guest --Jonas --

Agora ficou mais facil, mude isto, e teste novamente, acho que é isto que voce esta querendo:

procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
 if mover=1 then
  begin
    Image1.Top :=  Image1.Top + y;
    Image1.Left := Image1.Left + x;
  end;
end;

Link para o comentário
Compartilhar em outros sites

  • 0

Jonas, acho que ele ainda precisará se preocupar com a questão da posição em que o mouse foi clicado.

Tenho a impressão que deveria ser avaliado o deslocamento do mouse (dx e dy) em relação a posição inicial, ou outra abordagem. Observe que se o cara clica no meio da figura e faz o primeiro movimento, você atribui o Left e Top para esta posição, ou seja, a imagem dará um "salto".

Link para o comentário
Compartilhar em outros sites

  • 0
Deu certo o que eu queria, porem enquanto é arrastada a imagem ela fica piscando.

Alquem sabe como resolver isto?

Opa

Que bom que já resolveu...

Quanto a imagem piscando, coloque no OnCreate do Form que está a imagem...

DoubleBuffered := True;

e se não resolver totalmente de um doublebuffer no TImage tambem...

abraçx

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,4k
×
×
  • Criar Novo...