|
||
| Diyelimki bir klasörde sakladığınız resimleriniz var. Bu programla o klasöre erişip oradan bir resim seçtiğinizde o klasör altındaki bütün resimler, programınızın formuna 45*45 boyutunda diziliyor. Ve bu resimlerden herhangi birine bir kez tıkladığınızda o resim başka bir form yoluyla orjinal olarak gösteriliyor... Yapmanız gereken delphide bir form açmak (form1), arkasına yeni bir form daha açmak(form2) dir... (ben bu programı delphi.net ile yazdım) unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, System.ComponentModel, Borland.Vcl.ExtDlgs; type TForm1 = class(TForm) OpenPictureDialog1: TOpenPictureDialog; procedure FormPaint(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormDblClick(Sender: TObject); procedure FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.nfm} uses System.Drawing,System.Drawing.Drawing2D,System.IO,Cizim_ResimGoster; var secildi:Boolean; resimler:Array[0..500] of String; procedure TForm1.FormCreate(Sender: TObject); begin OpenPictureDialog1.Title := 'Gösterilecek resimlerin bulunduğu klasörü seçiniz'; end; procedure TForm1.FormPaint(Sender: TObject); var g:System.Drawing.Graphics; d:FileInfo; klasor:DirectoryInfo; dosyalar:Array of FileInfo; i, u, k, satir, sutun, max_sutun:Integer; const uzantilar:Array[0..3] of string= ('*.jpg', '*.bmp', '*.gif', '*.wmf'); begin g:=System.Drawing.Graphics.FromHwnd(IntPtr.Create(handle)); if secildi=false then g.DrawString('Resim seçmek için formu çift tıklayın', System.Drawing.Font.Create('Tahoma', 16, FontStyle.Regular), SolidBrush.Create(System.Drawing.Color.Black), 0, 0) else Begin g.Clear(System.Drawing.Color.White); d := FileInfo.Create(OpenPictureDialog1.FileName); klasor := DirectoryInfo.Create(d.DirectoryName); max_sutun := Self.ClientWidth div 50; for u := 0 to High(uzantilar) do Begin dosyalar := klasor.GetFiles(uzantilar[ u ]); for i := 0 to High(dosyalar) do Begin if sutun = max_sutun then Begin sutun := 0; satir := satir + 1; end; resimler[k] := dosyalar.FullName; try g.DrawImage(Image.FromFile(dosyalar.FullName), Rectangle.Create(sutun * 50, satir * 50, 45, 45)); except g.DrawString('BOZUK', System.Drawing.Font.Create('Tahoma', 8, FontStyle.Regular), SolidBrush.Create(System.Drawing.Color.Red), sutun * 50, satir * 50); end; sutun := sutun + 1; k := k + 1; end; end; end; end; procedure TForm1.FormDblClick(Sender: TObject); begin if OpenPictureDialog1.Execute then Begin secildi := true; Self.Repaint; //Paint olayının çalışmasını sağla end; end; procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); var i, satir, sutun, max_sutun:Integer; resim:TBitmap; begin if secildi then if Button = mbLeft then begin max_sutun := Self.ClientWidth div 50; satir := y div 50; sutun := X div 50; i := satir * max_sutun + sutun; try resim:=TBitmap.Create; resim.LoadFromFile(resimler); Form2.Show(); Application.ProcessMessages; Form2.Width := resim.Width + 5; Form2.Height := resim.Height + 20; Form2.Canvas.Draw(0,0,resim); Form2.caption := resimler; except ; end; end; end; end. |
||