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.

相关阅读 >>

Delphi xe6 android下捕获功能键

Delphi 图像分割

Delphi中复制线程

Delphi汇编级初探

Delphi 蜂鸣器发声

Delphi 莫名奇妙的错误 Delphi is not a valid integer value

Delphi android 平台加载文件

Delphi直接实现分享图片功能

Delphi多级指针

Delphi 获取一个文件夹下的所有文件

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...