在ScrollBox中放置一个Image1,然后再Image1中装载一个大的图片,谁能说说怎样能够在ScrollBox中移动图片,象在Acrobat Reader 阅读器中 在ScrollBox中放置一个Image1,然后再Image1中装载一个大的图片,谁能说说怎样能够在ScrollBox中移动图片,象在Acrobat Reader 阅读器中那样,可以用鼠标移动 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这个我也一直想要做这样效果的..MSN:[email protected]大家交流.. 这个应该不难。主要是利用Image的三个事件,MouseDown, MouseMove, MouseUp事件,MouseDown事件中记录鼠标按下时的Point的x,yMouseMove事件中就可以控制ScrollBox的HorzScrollBar的position与VertScrollBar的position。这样就能实现了。 代码如下: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. 500分http://expert.csdn.net/Expert/topic/1904/1904043.xml?temp=.7446405 用delphi实现怎么实现多个号码滚动的效果 请问下这样的窗口怎么做 求一个API函数.已知进程ID,如何判断该进程是否存在 delphi 如何把金额变成大写金额呢 高手赐教:delphi如何把文件压缩为jar格式, 一个小问题~~ 如果时间为空,这句话改怎么写? 【100分,会者不难】TreeView的一个小问题... 真的是左右为难啊 可不可以指定DBGRI每列的宽度 怎样把我的窗体添加到模板中? WINSOCK组件没有怎么办? delphi通过dbe或ado对数据库操作的程序能做成dll在vfp中调用吗? 高分在线等待
MSN:[email protected]
大家交流..
主要是利用Image的三个事件,
MouseDown, MouseMove, MouseUp事件,
MouseDown事件中记录鼠标按下时的Point的x,y
MouseMove事件中就可以控制ScrollBox的HorzScrollBar的position与
VertScrollBar的position。这样就能实现了。
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.