在ScrollBox中放置一个Image1,然后再Image1中装载一个大的图片,谁能说说怎样能够在ScrollBox中移动图片,象在Acrobat Reader 阅读器中那样,可以用鼠标移动

解决方案 »

  1.   

    这个我也一直想要做这样效果的..
    MSN:[email protected]
    大家交流..
      

  2.   

    这个应该不难。
    主要是利用Image的三个事件,
    MouseDown, MouseMove, MouseUp事件,
    MouseDown事件中记录鼠标按下时的Point的x,y
    MouseMove事件中就可以控制ScrollBox的HorzScrollBar的position与
    VertScrollBar的position。这样就能实现了。
      

  3.   

    代码如下:unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      ExtCtrls;type
      TForm1 = class(TForm)
        ScrollBox1: TScrollBox;
        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 }
        OriginPoint: TPoint;
        gMouseDownMark: Boolean;
      end;var
      Form1: TForm1;implementation{$R *.DFM}procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
        gMouseDownMark := true;
        OriginPoint.x := x;
        OriginPoint.y := y;
    end;procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
        gMouseDownMark := false;
    end;procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    var
      TmpX, TmpY: integer;
    begin
        if gMouseDownMark  then begin
            TmpX := x - OriginPoint.x;
            TmpY := x - OriginPoint.y;
            ScrollBox1.HorzScrollBar.Position := TmpX;
            ScrollBox1.VertScrollBar.Position := TmpY;        
        end;
    end;end.
      

  4.   

    500分http://expert.csdn.net/Expert/topic/1904/1904043.xml?temp=.7446405