PCTurk | Aşk Sevgi Resimleri , Mektupları , silkroad , komik msn avatarlar (Arşiv Ana sayfa) => Delphi

Konu: Fotoğraf Gösterme Programı...

Sayfa: [ 1 ]

sWaGg€r 06.07.2008 17:55:59
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.


Sayfa: [ 1 ]