Zoom in Zoom out

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
mulus
Üye
Mesajlar: 67
Kayıt: 30 May 2005 10:42
Konum: Bursa
İletişim:

Zoom in Zoom out

Mesaj gönderen mulus »

S.A.

Bir listview da resim dosyalarının yolunu listeletiyorum. Tıkladığında ayrı formda image nesnesi ile gösteriyorum.

Yapmak istediğime gelince resme zoom in ve zoom out yaptırmak yada bir combobox içinde %80 %90 gibi değerler seçildiğinde resimin zoom değerlerinin değişmesini istiyorum. bir nevi preview gibi..

Fikir sahibi olmadığım şey, Bunu yapabilmem için neleri kullanmam gerekir? bu iş için bir Comp. varmıdır? Siz olsanız nasıl bir yol denerdiniz?.. Timage doğru bir seçimmi? Resim dosyaları Jpg,bmp,Tif vb. olabiliyor bunların hepsini hatasız gösterip dediğim özellikleri kullanabileceğim bir yol yada companent varmıdır? Şimdiden fikirlerini paylaşan herkese Teşekkür ederim.
Kullanıcı avatarı
hdayi
Kıdemli Üye
Mesajlar: 1284
Kayıt: 29 Oca 2004 01:53
Konum: Erciyes'in eteklerinden.

Mesaj gönderen hdayi »

Timage'in strech özelliğini true yap.
en ve boy diye iki integer değişken tanımla.
resmi yüklediğin zaman resmin enini ve boyunu bu değişkenlere ata.
sonra combobox2tan değeri seçince aşağıdaki yolla timage'in ebatlarını değiştir. Strech true olduğundan işini görür.

Kod: Tümünü seç

    Image1.Width:=en * StrToInt(ComboBox1.Text) div 100;
    Image1.Height:=boy * StrToInt(ComboBox1.Text) div 100;
denedim çalıştı.

Kolay Gelsin...
Bişnev in ney çün hikâyet mîküned
Ez cüdâyîhâ şikâyet mîküned
Resim
mulus
Üye
Mesajlar: 67
Kayıt: 30 May 2005 10:42
Konum: Bursa
İletişim:

Mesaj gönderen mulus »

evt bende böyle yapmıştım ve çalıştı cevabın için teşekkür ederim fakat benim istediğim zoom yaptığım zaman tam resmin ortasına zoomlama yapmak ve tersi olayda da ortadan geriye doğru zoomlama yapmak. resmin left ve top değeri ile öyle bir oynamalıyımki zoom in ve out yaptığımda ilk görüntüsüne dönebilsin. yani üst,alt, sol ve sag uzunlukları eşit olarak hareket etsin. Topla çıkart diyenleri duyar gibiyim ama sabahtan beri yapıyorum ıhh. beceremedim . Biliyorum belki basit birşey ama bilene tabi :)
Kullanıcı avatarı
hdayi
Kıdemli Üye
Mesajlar: 1284
Kayıt: 29 Oca 2004 01:53
Konum: Erciyes'in eteklerinden.

Mesaj gönderen hdayi »

timage nesnesin özelliklerinde bi anchor'a bak
ben şu an bakamıyorum
Bişnev in ney çün hikâyet mîküned
Ez cüdâyîhâ şikâyet mîküned
Resim
Kullanıcı avatarı
vedatkaba
Kıdemli Üye
Mesajlar: 866
Kayıt: 06 Oca 2004 06:50
Konum: DARICA/GEBZE

Mesaj gönderen vedatkaba »

Kod: Tümünü seç

procedure SetCanvasZoomFactor(Canvas: TCanvas; AZoomFactor: Integer);
var
  i: Integer;
begin
  if AZoomFactor = 100 then
    SetMapMode(Canvas.Handle, MM_TEXT)
  else
  begin
    SetMapMode(Canvas.Handle, MM_ISOTROPIC);
    SetWindowExtEx(Canvas.Handle, AZoomFactor, AZoomFactor, nil);
    SetViewportExtEx(Canvas.Handle, 100, 100, nil);
  end;
end;


procedure TForm1.Button1Click(Sender: TObject);
var
  bitmap: TBitmap;
begin
  bitmap := TBitmap.Create;
  try
    bitmap.Assign(Form1.image1.Picture.Bitmap);
    SetCanvasZoomFactor(bitmap.Canvas, 70);
    Canvas.Draw(30, 30, bitmap);
  finally
    bitmap.Free
  end;
end;



bende böle bir kod var umarım işine yarar.

********Haydi kolay gelsin.
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.

***********************************
mulus
Üye
Mesajlar: 67
Kayıt: 30 May 2005 10:42
Konum: Bursa
İletişim:

Mesaj gönderen mulus »

ben şöyle yapmaya çalışıyorum ama olmuyor...
image nesnesi panelin içinde,

Kod: Tümünü seç

  Image1.Width:=en * StrToInt(ComboBox1.Text) div 100;
  Image1.Height:=boy * StrToInt(ComboBox1.Text) div 100;
  image1.Left:=((panel5.Width-image1.left)-image1.Width) div 2;//image in sağ tarafındaki boşluğu sol tarafla aynı yapıyorum
  image1.Top:= ((panel5.height-image1.top)-image1.Height) div 2;// image in üst taraftaki boşluğunu alt tarafıyla aynı yapıyorum..
Biraz yaklaştım ama bir kere büyütüp küçültünce sapıtıyor :?
Kullanıcı avatarı
hdayi
Kıdemli Üye
Mesajlar: 1284
Kayıt: 29 Oca 2004 01:53
Konum: Erciyes'in eteklerinden.

Mesaj gönderen hdayi »

kurduğun denklem yanlış

Kod: Tümünü seç

    Image1.Left:=(Form1.Width-Image1.Width) div 2;
    Image1.Top:=(Form1.Height-Image1.Height) div 2;
Kolay Gelsin...
Bişnev in ney çün hikâyet mîküned
Ez cüdâyîhâ şikâyet mîküned
Resim
Cevapla