Nasıl yapılır: Otomatik Ölçeklendirmeyi Önleyerek Performansı Artırma
GDI+ bir görüntüyü çizerken otomatik olarak ölçeklendirebilir, bu da performansı düşürür. Alternatif olarak, hedef dikdörtgenin boyutlarını yöntemine geçirerek görüntünün ölçeklendirilmesini kontrol edebilirsiniz DrawImage .
Örneğin, aşağıdaki DrawImage Yöntem çağrısı (50, 30) öğesinin sol üst köşesini belirtir, ancak bir hedef dikdörtgen belirtmez.
e.Graphics.DrawImage(image, 50, 30); // upper-left corner at (50, 30)
e.Graphics.DrawImage(image, 50, 30) ' upper-left corner at (50, 30)
Bu DrawImage yöntemin, gerekli bağımsız değişken sayısı bakımından en kolay sürümü olmasına rağmen, en etkili olması gerekmez. GDI+ tarafından kullanılan çözüm (genellikle 96 nokta/inç), nesnede depolanan çözünürlükten farklıysa Image , DrawImage yöntemi görüntüyü ölçeklendirecektir. Örneğin, bir Image nesnenin 216 piksellik bir genişliği olduğunu ve inç başına 72 noktayla saklı bir yatay çözüm değerini olduğunu varsayalım. 216/72 3 olduğundan, DrawImage görüntüyü inç başına 96 nokta çözünürlükte 3 cm genişlik olacak şekilde ölçeklendirecektir. Yani, DrawImage 96x3 = 288 piksel genişliğine sahip bir resim görüntüler.
ekran çözünürlüğünüz inç başına 96 noktadan farklı olsa bile GDI+, büyük olasılıkla ekran çözünürlüğü 96 nokta başına olacak şekilde görüntüyü ölçeklendirecektir. bunun nedeni, bir GDI+ Graphics nesnesinin cihaz bağlamıyla ilişkilendirilmesi ve GDI+ ekran çözünürlüğü için cihaz bağlamını sorguladığında, gerçek ekran çözünürlüğünden bağımsız olarak sonuç genellikle 96 ' dir. Yönteminde hedef dikdörtgeni belirterek otomatik ölçeklendirmekten kaçınabilirsiniz DrawImage .
Örnek
Aşağıdaki örnek aynı görüntüyü iki kez çizer. İlk durumda, hedef dikdörtgenin genişliği ve yüksekliği belirtilmez ve görüntü otomatik olarak ölçeklendirilir. İkinci durumda, hedef dikdörtgenin genişliği ve yüksekliği (piksel cinsinden ölçülür) orijinal görüntünün genişliği ve yüksekliğiyle aynı olacak şekilde belirtilir. Aşağıdaki çizimde, iki kez işlenen görüntü gösterilmektedir:

Image image = new Bitmap("Texture.jpg");
e.Graphics.DrawImage(image, 10, 10);
e.Graphics.DrawImage(image, 120, 10, image.Width, image.Height);
Dim image As New Bitmap("Texture.jpg")
e.Graphics.DrawImage(image, 10, 10)
e.Graphics.DrawImage(image, 120, 10, image.Width, image.Height)
Kod Derleniyor
yukarıdaki örnek, Windows Forms kullanımı için tasarlanmıştır ve PaintEventArgse olay işleyicisinin bir parametresi olan gerektirir Paint . Texture.jpg, sisteminizde geçerli olan bir görüntü adı ve yol ile değiştirin.