[ prekidac @ 27.02.2004. 22:02 ] @
Pravim mali preglednik slika koji treba da ima: zoom in, zoom out i mogucnost pomjeranja slike putem misa ("rukom") nesto slicno onom kod ACDSee Viewer-a. Da li treba da nabavim neke druge komponente (koje, gdje) ili moze i sa standardnim, ako moze kako?
Hvala unaprijed!!!
[ marcony86 @ 28.02.2004. 09:54 ] @
Ovaj kod sam ja koristio za pomeranje slike mišem, kao i za pomeranje pomoću scrollbar-ova.

Prvo u "private" sekciji definišeš promenljive:
Code:

private
  Dragging        :  BOOLEAN;
  StartPressPoint :  TPoint;
  StartBitmapPoint:  TPoint;
{ Private declarations }


Na formu postaviš panel, a na njega TImage, kao i dve TScrollBar komponente (van panela).
Evo ti primer mog koda, pa pokusaj!
Code:

procedure TForm5.ScrollBarHorizontalChange(Sender: TObject);
begin
Image1.Left := -ScrollBarHorizontal.Position;
end;

procedure TForm5.ScrollBarVerticalChange(Sender: TObject);
begin
Image1.Top := -ScrollBarVertical.Position;
end;

procedure TForm5.FormCreate(Sender: TObject);
begin
Dragging := False;
end;

procedure TForm5.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
Dragging := TRUE;
StartPressPoint  := Point(X,Y);
Image1.Cursor := CrSizeAll;
end;

procedure TForm5.Image1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
Dragging := FALSE;
Image1.Cursor := CrDefault;
end;

procedure TForm5.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
 VAR
    xDelta:  INTEGER;
    yDelta:  INTEGER;
begin
  IF   Dragging
  THEN BEGIN
   IF   ScrollBarHorizontal.Visible
    THEN BEGIN
      xDelta := X - StartPressPoint.X;
      Image1.Left :=
        Max(-Image1.Width + Panel1.Width, Min(0, StartBitmapPoint.X + xDelta));
      ScrollBarHorizontal.Position := -Image1.Left;
      StartBitmapPoint.X := Image1.Left;
    END;
    IF   ScrollBarVertical.Visible
    THEN BEGIN
      yDelta := Y - StartPressPoint.Y;
        Image1.Top := Max(-Image1.Height + Panel1.Height, Min(0, StartBitmapPoint.Y + yDelta));
          ScrollBarVertical.Position := -Image1.Top;
      StartBitmapPoint.Y := Image1.Top
    END;
  END;
end;
[ prekidac @ 01.03.2004. 10:44 ] @
U zadnjoj proceduri dobijem error za Max i Min
Image1.Left :=
Max(-Image1.Width + Panel1.Width, Min(0, StartBitmapPoint.X + xDelta));
[ broker @ 01.03.2004. 11:38 ] @
Pa nije ti dao kod koji radi nego primer koda.
Na osnovu toga ti treba da napravis svoje.
[ prekidac @ 02.03.2004. 16:58 ] @
Uspio sam uz neke prepravke. Sada mi nedostaje jos Zoom in i Zoom out (malo sam dosadan). Hvala svima
[ Rapaic Rajko @ 17.03.2004. 11:44 ] @
Pokusaj sa Canvas.StretchDraw().

Rajko
[ prekidac @ 06.04.2004. 17:20 ] @
***Pokusaj sa Canvas.StretchDraw()***

Probao sam ali ocito "ne kontam" kako da koristim tu komandu (ni poslje cackanja po helpu). Da li mozes da mi pojasnis kako da je pravilno iskoristim (na nekom primjeru). Hvala unaprijed!!!