Movendo imagem com o mouse...

31/03/2006

E ai amigos, Tudo bem??
Bem é seguinte:
Tem um aplicativo que manipula plantas de fabricas e industrias.
O Problema é que essas imagens são muito grandes então pensei em desenvolver uma forma de arrasta-la com o mouse para melhor visualizá-la.
Assim coloquei um Scrollbox e dentro de mesmo um Image com uma imagem bem grande.
Com o seguinte código:
CODEuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, jpeg, ExtCtrls, StdCtrls, SkinImage, HotImage;

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

var
  Form1: TForm1;

implementation

{$R *.dfm}


procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  if ssLeft in Shift then
    Begin
      pX := X;
      pY := Y;
    End;
end;

procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
var
dX , dY : Integer;
begin
  if ssLeft in Shift then
    Begin
      dX := px - X;
      dY := py - Y;
      if X <> pX then
        ScrollBox1.HorzScrollBar.Position := ScrollBox1.HorzScrollBar.Position + dX;
      if Y <> pY then
        ScrollBox1.VertScrollBar.Position := ScrollBox1.VertScrollBar.Position + dY;
      pX := X;
      pY := Y;
    End;

end;

end.


Porém ao arrastar a imagem ela fica trepidando, alguma dica??


Caezar

Respostas

16/05/2012

Eniorm

Opa...
ressuscitei esse tópico, testei esse código e funciona legal, só com o problema já relatado de trepidar, porém quando pára a movimentação com o mouse, não distorce a imagem.

abraço
Responder Citar

16/05/2012

Joel Rodrigues

Teste alterar a propriedade DoubleBuffered do form para true. Não lembro quais outros componentes containers possuem essa propriedade, veja se os panels e scrollboxes tem também.
Responder Citar