📄 showimgu.pas
字号:
unit ShowImgU;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, StdCtrls, Buttons;
type
TShowImgF = class(TForm)
Panel3: TPanel;
Image1: TImage;
Label1: TLabel;
procedure Label1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Label1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure Label1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Label1DblClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
moving:Boolean;
image_left:integer;
image_top:integer;
origin:Tpoint;
visa1:Tpoint;//鼠标当前位置相对图象右下角的坐标
visa2:Tpoint;//鼠标当前位置相对图象左上角的坐标
{ Private declarations }
public
{ Public declarations }
end;
var
ShowImgF: TShowImgF;
implementation
{$R *.DFM}
procedure TShowImgF.Label1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
ph,pw,ih,iw:Integer;
begin
if (Button=mbleft) and (not(Label1.Cursor=crDefault)) then begin
Moving:=True;
origin.x:=X;
origin.y:=Y;
image_left:=Image1.Left;
image_top:=Image1.Top;
ih:=Panel3.Height;
iw:=Panel3.Width;
ph:=Image1.Picture.Height;
pw:=Image1.Picture.Width;
if (ph>ih) and (pw>iw) then begin
visa1.x:=X-(Image1.Width-Panel3.Width+Image1.Left);
visa1.y:=Y-(Image1.Height-Panel3.Height+Image1.Top);
end else if (ph>ih) then begin
visa1.x:=X-(((Image1.Width-Panel3.Width) Div 2)+Image1.Left);
visa1.y:=Y-(Image1.Height-Panel3.Height+Image1.Top);
end else if (pw>iw) then begin
visa1.x:=X-(Image1.Width-Panel3.Width+Image1.Left);
visa1.y:=Y-(((Image1.Height-Panel3.Height) Div 2)+Image1.Top);
end;
visa2.x:=X-Image1.left;
visa2.y:=Y-Image1.top;
end else if Button=mbRight then Close;
end;
procedure TShowImgF.Label1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if moving then begin
if X>visa2.x then X:=visa2.x;
if Y>visa2.y then Y:=visa2.y;
if X<visa1.x then X:=visa1.x;
if Y<visa1.y then Y:=visa1.y;
image1.left:=image_left+(X-origin.x);
image1.top:=image_top+(Y-origin.y);
end;
end;
procedure TShowImgF.Label1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if Button=mbLeft then begin
Moving:=False;
end;
end;
procedure TShowImgF.Label1DblClick(Sender: TObject);
begin
Close;
end;
procedure TShowImgF.FormCreate(Sender: TObject);
begin
Width:=Screen.Width;
Height:=Screen.Height;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -