Jump to content
Fórum Script Brasil
  • 0

[resolvido] Uma Duvida Sobre Imagem


amauri_filho
 Share

Question

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 to comment
Share on other sites

9 answers to this question

Recommended Posts

  • 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.

Edited by Micheus
Adicionado o delimitador de código [code] [/code]. Lembre-se de utilizá-lo para melhor visualização
Link to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Forum Statistics

    • Total Topics
      151k
    • Total Posts
      649.1k
×
×
  • Create New...