⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit1.pas

📁 精彩编程百例51~75 其中有 cpu速度测试 检测声卡 查询内存信息 图像处理技巧 模拟放大镜效果等待
💻 PAS
字号:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ExtCtrls, StdCtrls, Buttons, ExtDlgs;

type
  TMainForm = class(TForm)
    FramePanel: TPanel;
    BackImage: TImage;
    ForeImage: TImage;
    OpenPictureDialog1: TOpenPictureDialog;
    open: TBitBtn;
    exit: TBitBtn;
    about: TBitBtn;
    procedure FormCreate(Sender: TObject);
    procedure ForeImageMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure exitClick(Sender: TObject);
    procedure ForeImageDblClick(Sender: TObject);
    procedure openClick(Sender: TObject);
    procedure aboutClick(Sender: TObject);
    procedure FormClick(Sender: TObject);
  private
    { Private declarations }
  public
  procedure ImageCopy(CenterX, CenterY, Side: Integer);
    { Public declarations }
  end;

var
  MainForm: TMainForm;
implementation
const
  sSide=30;
  dSide=45;
var
  msHide: Boolean;
  OldX, OldY, NewX, NewY: Integer;
  Dest, Source : TRect;
{$R *.DFM}

procedure TMainForm.FormCreate(Sender: TObject);
begin
  msHide:=True;
  Canvas.CopyMode:=cmSrcCopy //复制模式
end;

{实现复制图像的过程}
procedure TMainForm.ImageCopy(CenterX, CenterY, Side: Integer);
begin
  with Source do
  begin//获取图像像素信息
    Left:=CenterX-Side;
    Top:=CenterY-Side;
    Right:=CenterX+Side;
    Bottom:=CenterY+Side;
  end;
  with Dest do
  begin//复制图像相关像素
    Left:=CenterX-dSide;
    Top:=CenterY-dSide;
    Right:=CenterX+dSide;
    Bottom:=CenterY+dSide;
  end;
  ForeImage.Canvas.CopyRect(Dest, BackImage.Canvas, Source);//复制图像
end;

{放大图像}
procedure TMainForm.ForeImageMouseMove(Sender: TObject; Shift: TShiftState;
  X, Y: Integer);
begin
  NewX:=X;//鼠标位置
  NewY:=Y;
  if msHide then
  begin
    OldX:=NewX;
    OldY:=NewY;
    msHide:=False;
    ShowCursor(False);//隐藏鼠标
  end
  else
  begin
    ImageCopy(OldX, OldY, dSide);// 复制图像
  end;
  ImageCopy(NewX, NewY, sSide);//放大图像
  OldX:=NewX;
  OldY:=NewY;
end;

procedure TMainForm.exitClick(Sender: TObject);
begin
  close;//关闭窗体,退出程序
end;

procedure TMainForm.ForeImageDblClick(Sender: TObject);
begin
  showcursor(true);//显示鼠标
  exit.Visible:=true;//激活窗体中的按钮
  open.Visible:=true;
  about.Visible:=true;
end;

procedure TMainForm.openClick(Sender: TObject);
begin
  mainform.OpenPictureDialog1.Title:='请选择一个图像文件打开';//打开对话框的标题
  mainform.OpenPictureDialog1.InitialDir:='C:\My Documents\My Pictures';//打开文件的路径
  if mainform.OpenPictureDialog1.Execute then
    mainform.foreImage.Picture.LoadFromFile(mainform.OpenPicturedialog1.filename);//导入图像文件
    mainform.backImage.Picture.LoadFromFile(mainform.OpenPicturedialog1.filename);
    showcursor(false);
    exit.Visible:=false;//使窗体中的按钮不可见
    open.Visible:=false;
    about.Visible:=false;
end;

{窗体的关于信息}
procedure TMainForm.aboutClick(Sender: TObject);
begin
  messagedlg('这是一个图片放大镜工具'+
  '   移动鼠标可以放大光标所在处的区域图片',mtinformation,[mbok],0);
end;

{点击窗体给出提示信息}
procedure TMainForm.FormClick(Sender: TObject);
begin
  messagedlg('在图片上双击鼠标左键就可以出现按钮了哦!!',mtinformation,[mbok],0);
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -