delphi利用ScrollBox实现图像漫游  
官方Delphi 学习QQ群: 682628230(三千人)
频道

delphi利用ScrollBox实现图像漫游


将一个大图在一个小的窗体显示出来,效果同adobe reader的那个手型工具,原理很简单,先拖一个scrollbox控件,然后在该控件上放置一个image控件用于加载大图片。核心是移动大小的计算。代码如下,希望能对需要的同志有帮助。

unit RealWinPicU;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls,jpeg, ComCtrls, StdCtrls;

type
TRealWinPicF = class(TForm)
Image1: TImage;
ScrollBox1: TScrollBox;
procedure FormShow(Sender: TObject);
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
RealWinPicF: TRealWinPicF;
MoveFlag:Boolean;
startPos,endPos:TPoint;
implementation

{$R *.dfm}

procedure TRealWinPicF.FormShow(Sender: TObject);
var
myjpg:TJPEGImage;
mybmp:TBitmap;
begin
myjpg:=TJPEGImage.Create;
myjpg.LoadFromFile('./temp/1.jpg');
Image1.Picture.Bitmap.Assign(myjpg);
ScrollBox1.HorzScrollBar.Range:=myjpg.Width;
ScrollBox1.VertScrollBar.Range:=myjpg.Height;

myjpg.free;
end;

procedure TRealWinPicF.Image1MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
MoveFlag:=True;
startPos.X:=x;
startPos.Y:=y;

end;

procedure TRealWinPicF.Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
MoveFlag:=False;
end;

procedure TRealWinPicF.Image1MouseMove(Sender: TObject; Shift: TShiftState;
X, Y: Integer);
var
Vx,Vy:Integer;//x,y位移。
begin
Self.Caption:='x:'+IntToStr(x)+' Y:'+inttostr(y);
if MoveFlag then
begin
Vx:=x-startpos.X;
Vy:=y-startpos.Y;
ScrollBox1.HorzScrollBar.Position:=ScrollBox1.HorzScrollBar.Position-Vx*(Image1.Width div ScrollBox1.HorzScrollBar.Range);
ScrollBox1.VertScrollBar.Position:=ScrollBox1.VertScrollBar.Position-Vy*(Image1.Height div ScrollBox1.VertScrollBar.Range);
end;
end;

end.

推荐分享
图文皆来源于网络,内容仅做公益性分享,版权归原作者所有,如有侵权请告知删除!
 

Copyright © 2014 DelphiW.com 开发 源码 文档 技巧 All Rights Reserved
晋ICP备14006235号-8 晋公网安备 14108102000087号

执行时间: 0.041298866271973 seconds