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.
Zoom in Zoom out
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
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.
denedim çalıştı.
Kolay Gelsin...
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;
Kolay Gelsin...
Bişnev in ney çün hikâyet mîküned
Ez cüdâyîhâ şikâyet mîküned

Ez cüdâyîhâ şikâyet mîküned

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 

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;
********Haydi kolay gelsin.
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.
***********************************
ben şöyle yapmaya çalışıyorum ama olmuyor...
image nesnesi panelin içinde,
Biraz yaklaştım ama bir kere büyütüp küçültünce sapıtıyor 
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..

kurduğun denklem yanlış
Kolay Gelsin...
Kod: Tümünü seç
Image1.Left:=(Form1.Width-Image1.Width) div 2;
Image1.Top:=(Form1.Height-Image1.Height) div 2;
Bişnev in ney çün hikâyet mîküned
Ez cüdâyîhâ şikâyet mîküned

Ez cüdâyîhâ şikâyet mîküned
