程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> Delphi實現圖片水平、垂直翻轉、拉伸變形處理代碼

Delphi實現圖片水平、垂直翻轉、拉伸變形處理代碼

編輯:Delphi

本例使用Delphi實現圖片水平、垂直翻轉、拉伸變形等效果處理代碼,代碼中有豐富的注釋,對學習Delphi圖形處理很有用處。完整代碼如下:

vIEw source print? 001 unit Unit1; 002 interface 003 uses 004 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, 005 StdCtrls, ExtCtrls, ExtDlgs, Buttons; 006 type 007 TForm1 = class(TForm) 008 OpenPictureDialog1: TOpenPictureDialog; 009 new: TBitBtn; 010 yuan: TBitBtn; 011 shui: TBitBtn; 012 chui: TBitBtn; 013 bian: TBitBtn; 014 exit: TBitBtn; 015 procedure ForMactivate(Sender: TObject); 016 procedure chuiClick(Sender: TObject); 017 procedure bianClick(Sender: TObject); 018 procedure shuiClick(Sender: TObject); 019 procedure yuanClick(Sender: TObject); 020 procedure newClick(Sender: TObject); 021 procedure FormDestroy(Sender: TObject); 022 procedure exitClick(Sender: TObject); 023 private 024 { Private declarations } 025 public 026 { Public declarations } 027 end; 028 var 029 Form1: TForm1; 030 bitmap:Tbitmap; 031 i,numm:integer; 032 rect1,rect2,rect3:trect; 033 implementation 034 {$R *.DFM} 035 //自動提示載入圖形 036 procedure TForm1.ForMactivate(Sender: TObject); 037 begin 038 bitmap:=Tbitmap.Create;//創建一個圖形對象 039 OpenPictureDialog1.filter:=’Bitmap file(*.bmp)|*.bmp’;//文件類型過濾 040 Form1.OpenPictureDialog1.Title:=’請選擇一個圖像文件打開’;//打開對話框標題 041 Form1.OpenPictureDialog1.InitialDir:=’C:\My Documents\My Pictures’;//初始路徑 042 if OpenPictureDialog1.Execute then 043 begin 044 bitmap.loadfromfile(OpenPictureDialog1.FileName);//導入圖像 045 Form1.Canvas.Draw(0,0, Bitmap);//在畫布上畫圖像 046 end; 047 end; 048 //實現垂直鏡像 049 procedure TForm1.chuiClick(Sender: TObject); 050 begin 051 Form1.repaint;//窗體重畫 052 for i:=0 to bitmap.Height do//從畫布頂部到底部 053 begin 054 with rect1 do 055 begin 056 left:=0; 057 top:=i; 058 right:=bitmap.Width;//圖像尺寸屬性轉換 059 bottom:=i+1; 060 end; 061 with rect2 do 062 begin 063 left:=0; 064 top:=(Form1.Height div 2)-i-1; 065 right:=bitmap.Width; 066 bottom:=(Form1.Height div 2)-i; 067 end; 068 with rect3 do 069 begin 070 left:=0; 071 top:=(Form1.Height div 2)+i-1; 072 right:=bitmap.Width; 073 bottom:=(Form1.Height div 2)+i; 074 end; 075 Canvas.copyrect(rect2,bitmap.Canvas,rect1); 076 Canvas.copyrect(rect3,bitmap.Canvas,rect1);//在畫布上重畫圖像 077 end; 078 end; 079 //變形的水平鏡像 080 procedure TForm1.bianClick(Sender: TObject); 081 begin 082 Form1.repaint;//窗體重畫 083 for i:=0 to bitmap.Width do//從畫布左端到右端 084 begin 085 with rect1 do 086 begin 087 left:=i; 088 top:=0; 089 right:=i+1; 090 bottom:=bitmap.Height;//圖像尺寸屬性轉換 091 end; 092 with rect2 do 093 begin 094 left:=(Form1.Width div 2)-i-1; 095 top:=i; 096 right:=(Form1.Width div 2)-i; 097 bottom:=bitmap.Height+i; 098 end; 099 with rect3 do 100 begin 101 left:=(Form1.Width div 2)+i-1; 102 top:=i; 103 right:=(Form1.Width div 2)+i; 104 bottom:=bitmap.Height+i; 105 end; 106 Canvas.copyrect(rect2,bitmap.Canvas,rect1); 107 Canvas.copyrect(rect3,bitmap.Canvas,rect1); 108 end; 109 end; 110 //水平鏡像 111 procedure TForm1.shuiClick(Sender: TObject); 112 begin 113 Form1.repaint; 114 if bitmap.Width>0 then numm:= Form1.Width div 2; 115 for i:=0 to numm do 116 begin 117 bitblt(Form1.Canvas.handle,i,0,i,bitmap.Height, 118 bitmap.Canvas.handle,bitmap.Width-i,0,srccopy);//在畫布上重畫圖像 119 end; 120 end; 121 //原圖顯示 122 procedure TForm1.yuanClick(Sender: TObject); 123 begin 124 Form1.Canvas.Draw(0,0, Bitmap);//在畫布上畫原始圖像 125 end; 126 //導入新圖像文件 127 procedure TForm1.newClick(Sender: TObject); 128 begin 129 OpenPictureDialog1.filter:=’Bitmap file(*.bmp)|*.bmp’;//文件格式過濾 130 Form1.OpenPictureDialog1.Title:=’請選擇一個圖像文件打開’;//打開對話框標題 131 Form1.OpenPictureDialog1.InitialDir:=’C:\My Documents\My Pictures’;//導入文件 132 初始路徑 133 if OpenPictureDialog1.Execute then 134 begin 135 bitmap.loadfromfile(OpenPictureDialog1.FileName);//導入圖像 136 Form1.Canvas.Draw(0,0, Bitmap);//在畫布上畫圖像 137 end; 138 end; 139 //釋放Bitmap 對象 140 procedure TForm1.FormDestroy(Sender: TObject); 141 begin 142 bitmap.Free;//釋放圖像對象 143 end; 144 procedure TForm1.exitClick(Sender: TObject); 145 begin 146 close;//關閉窗體,退出程序 147 end; 148 end.
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved