Şimdi Ara

Picture Box Boyutlarına Resmi Sıgdırmak ?

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
6
Cevap
0
Favori
8.642
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Arkadaşlar benim yapmak istediğim, picturebox icine bir resim atınca bu resmin boyutu, picturebox'ın boyutundan büyükse, picturebox'ın boyutlarına uygun bir hale getirsin. Eger küçükse oldugu gibi bıraksın. Bunun icin picturebox'ın sizemode özelliği var ama bu resmin hem kücük hemde büyük oldugu zaman her ikidurumdada resmi picturebox'ın icine sıgdırıyor.
    Sorunda resim kücük olup, picture box büyük oldugu zaman ortaya cıkıyoru. Görüntü cok kötü oluyor. bunu engellemek istiyorum. Direk kod vermenizde gerekmez beni sonuca götürecek her cevap olur



  • if (pictureBox1.Image.Width < pictureBox1.Width && pictureBox1.Image.Height < pictureBox1.Height)
    {
    pictureBox1.Width = pictureBox1.Image.Width;
    pictureBox1.Height = pictureBox1.Image.Height;
    }

    Ters mantıkla gidersek çözebiliriz :) Platform belirtmemişsiniz ama Picturebox sanırım .NET'te var. Delphi ile daha etkin çözüm yolları üretilebilir...
  • evt .net (VB) kullanıyorum. Kod icin saol, direk kodları ters olarak yazdım olmadı tabiki :) Sanırım işin biraz temeline inmek gerekiyor, picturebox ve drawing sınıfının özelliklerini bilmek gerekiyor.

    Ahh şu ingilizcem biraz iyi olsa cok manyaq süper olacak
  • O halde sadece resim büyük olduğunda Picturebox içerisine sığdırmayı deneyebilirsin.
    if (pictureBox1.Image.Width > pictureBox1.Width && pictureBox1.Image.Height > pictureBox1.Height)
    {
    picturebox1.SizeMode = PictureBoxSizeMode.StretchImage;
    }
    else

    return;


    yada sonradan aklıma gelen bir özellik projenin resourchlarından Resimleri Thumpnail haline getirebilirsin Pictureboxta'da bu özellik mevcuttu hatırladığım kadarı ile MSDN'den araştır kesinlikle bulursun

    Picturebox + GetThumbnailImage
  • quote:

    Orjinalden alıntı: Aspci79

    O halde sadece resim büyük olduğunda Picturebox içerisine sığdırmayı deneyebilirsin.




    Ben bunu daha önce niye düşünemedim peki, cidden bilmiyorum Bazen duruyor işte kafa. Gercekten çok teşekkürler
  • Mesaj oldukça eski. Aydın arkadaşımız o tarihten bu yana sorunu çoktan halletmiştir ama asıl mesele bu sayfaların ziyaretçilere faydalı olması.

    Bu nedenle, görüşlerimi yazayım. Bir kere konuya cevap yazan arkadaşlar, Aydın arkadaşımızın derdini anlayamamış.
    Evet, pictureBox ların her dilde bir kaç ortak özelliği var.
    Örneğin, C# da Normal, StretchImage, AutoSize, CenterImage ve Zoom özellikleri var.
    Bu özelliklerle resmi orijinal ya da küçük boyutunda gösterebiliyor pictureBox'ın boyutuna indirgeyebiliyor,
    zoom yapabiliyorsunuz vesaire. Ancak (Aydın'ın da sorunu olan) en boy oranını koruyarak küçültüp büyütemiyorsunuz.

    İşte bu sorunu çözmek için bir kaç satır kod yazayım. Kodlar C# içindir. İstediğiniz dile uyarlayın.

    154 X 164 ebatlarında bir groupBox içinde;
    Left:2
    Top:7
    konumunda bir pictureBox olduğunu varsayıyorum.
    Width:150
    Height:150

    Buna göre; Üç ihtimal var, pictureBox'a koyacağımız resim;
    1. Resmin eni boyundan fazladır (genelde öyle olur)
    2. Resmin boyu eninden fazladır (bazen de böyle olur)
    3. Resmin boyu ve eni eşittir (Nadir de olsa olabilir)

    Her üç ihtimali düşünerek kodları yazıyoruz.
    Ancak bu kodlardaki değerler yukarıda bahsettiğim pictureBox konumu ve ölçülerine göredir.

    C#

    //resim yolunu img isimli değişkene alıyoruz.
    Image img = Image.FromFile( "Buraya Dosya yolu yazılıyor" ); //Veya bunun yerine diğer yöntemler

    int genislik = 0;
    int yukseklik = 0;

    if (img.Width > img.Height) //Eğer resmin genişliği yüksekliğinden fazla ise
    {
    pictureBox1.Width = 150; //Genişlik en büyük değer olduğu için genişliği pictureBox'ın genişliği kadar yapıyoruz.
    yukseklik = img.Height * 150 / img.Width; //Genişlik 150 olursa yükseklik ne kadar olur denklemini yapıyoruz.
    pictureBox1.Height = yukseklik; //Bulduğumuz yüksekliği picturBox'ın yüksekliği olarak ayarlıyoruz.

    //pictureBox'ın 154 px genişliğinde, 164 px yüksekliğinde bir groupBox içinde olduğunu dikkate alırsanız,
    //pictureBox'ın bo groupBox'ın her zaman ortasında olması için (154 X 164 ebatlarını gözönünde tutarak)
    //Konumunu aşağıda ayarlıyoruz. İsterseniz önce aşağıdaki bu iki satırı kullanmadan deneyin. Sonra farkı görün.
    pictureBox1.Left = (154 - pictureBox3.Width) / 2; //groupBox içindeki boşluğu hesaplıyoruz, ikiye bölüp resmi yarısına koyuyoruz.
    pictureBox1.Top = (164 - pictureBox3.Height) / 2; //Yukarıda soldan sağa yaptığımız işlemi yukarıdan aşağıya yapıyoruz.

    //Aşağıdaki bölümleri aynı mantıkla düşünün.
    }

    else if (img.Width < img.Height) //Yok eğer resmin yüksekliği genişliğinden fazla ise

    {
    pictureBox1.Height = 150;
    genislik = img.Width * 150 / img.Height;
    pictureBox1.Width = genislik;
    pictureBox1.Left = (154 - pictureBox1.Width) / 2;
    pictureBox1.Top = (164 - pictureBox1.Height) / 2;
    }

    else //aksi takdirde (yani genişlik ve yükseklik eşit ise

    {
    pictureBox1.Width = 150;
    pictureBox1.Height = 150;
    pictureBox1.Left = 2;
    pictureBox1.Top = 7;
    }



    Orhan AYGÜN



    < Bu mesaj bu kişi tarafından değiştirildi oaygun -- 22 Şubat 2016; 5:31:49 >




  • Yapay Zeka’dan İlgili Konular
    Daha Fazla Göster
    
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.