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

📄 unit1.~pas

📁 Delphi_picture例程,是一个实用的图片变形的例子.
💻 ~PAS
字号:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    Image1: TImage;
    B_load: TBitBtn;
    OpenDialog1: TOpenDialog;
    B_ver: TBitBtn;
    B_hor: TBitBtn;
    B_transform: TBitBtn;
    procedure B_loadClick(Sender: TObject);
    procedure B_verClick(Sender: TObject);
    procedure B_horClick(Sender: TObject);
    procedure B_transformClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  bmp: TBitmap;  //图片文件

implementation

{$R *.dfm}

procedure TForm1.B_loadClick(Sender: TObject);
begin
 if OpenDialog1.Execute then
  begin
   bmp:=TBitmap.Create;
   bmp.LoadFromFile(self.OpenDialog1.FileName);
   Image1.Picture.Bitmap:=bmp;  //载入图片
  end;
end;

procedure TForm1.B_verClick(Sender: TObject);
var
 maxwidth,maxheight: integer;
 i,j,k: integer;
 temp: TColor;
begin
 maxwidth:=Image1.Picture.Bitmap.Width-1;
 maxheight:=Image1.Picture.Bitmap.Height-1;
 if (maxheight mod 2=0) then
  k:=(maxheight-2) div 2
 else
  k:=(maxheight-1) div 2;
 for i:=0 to k do
  for j:=0 to maxwidth do
   begin
    temp:=Image1.Canvas.Pixels[j,i];
    Image1.Canvas.Pixels[j,i]:=Image1.Canvas.Pixels[j,maxheight-i];
    Image1.Canvas.Pixels[j,maxheight-i]:=temp;
   end;
 Image1.Refresh;  //刷新显示
end;

procedure TForm1.B_horClick(Sender: TObject);
var
 maxwidth,maxheight: integer;
 i,j,k: integer;
 temp: TColor;
begin
 maxwidth:=Image1.Picture.Bitmap.Width-1;
 maxheight:=Image1.Picture.Bitmap.Height-1;
 if (maxwidth mod 2=0) then
  k:=(maxwidth-2) div 2
 else
  k:=(maxwidth-1) div 2;
 for i:=0 to maxheight do
  for j:=0 to k do
   begin
    temp:=Image1.Canvas.Pixels[j,i];
    Image1.Canvas.Pixels[j,i]:=Image1.Canvas.Pixels[maxwidth-j,i];
    Image1.Canvas.Pixels[maxwidth-j,i]:=temp;
   end;
 Image1.Refresh;  //刷新显示
end;

procedure TForm1.B_transformClick(Sender: TObject);
var
 maxwidth,maxheight: integer;
 i,j,k: integer;
 flag: Boolean;
 temp: TColor;
begin
 maxwidth:=Image1.Picture.Bitmap.Width-1;
 maxheight:=Image1.Picture.Bitmap.Height-1;
 if (maxwidth mod 2=0) then
  begin
   k:=(maxwidth-2) div 2;
   flag:=True;
  end
 else
  begin
   k:=(maxwidth-1)div 2;
   flag:=False;
  end;
 for i:=0 to k do
  for j:=0 to maxheight do
   begin
    temp:=Image1.Canvas.Pixels[i,j];
    Image1.Canvas.Pixels[i,j]:=Image1.Canvas.Pixels[maxwidth-i,maxheight-j];
    Image1.Canvas.Pixels[maxwidth-i,maxheight-j]:=temp;
   end;
 if (maxheight mod 2)=0 then
  k:=(maxheight-2) div 2
 else
  k:=(maxheight-1) div 2;
 if flag then
  begin
   i:=maxwidth div 2;
   for j:=0 to k do
    begin
     temp:=Image1.Canvas.Pixels[i,j];
     Image1.Canvas.Pixels[i,j]:=Image1.Canvas.Pixels[i,maxheight-j];
     Image1.Canvas.Pixels[i,maxheight-j]:=temp;
    end;
   end;
 Image1.Refresh;  //刷新显示
end;


end.

⌨️ 快捷键说明

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