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 分割文件合并文件的函数

rad studio Delphi创建安卓服务creating android services

Delphi xe5 手机应用开发经验技巧

Delphi 将被其他窗体遮住的窗体弹到最前面

Delphi xe intraweb 程序在iis下的发布详细教程

Delphi在网格cxgrid的左上角放置一个按钮

Delphi twebbrowser 响应回车键(ewb响应正常,无需额外代码)

Delphi 字符串与日期格式互转

Delphi tstream 详细介绍

Delphi 自带gif控件的动画图片加载和播放

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



打赏

取消

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

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

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

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

评论

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