Share via


Nasıl yapılır: Otomatik Ölçeklendirmeyi Önleyerek Performansı Artırma

GDI+, siz çizerken görüntüyü otomatik olarak ölçeklendirebilirsiniz ve bu da performansı düşürür. Alternatif olarak, hedef dikdörtgenin boyutlarını yöntemine geçirerek görüntünün ölçeklendirmesini DrawImage denetleyebilirsiniz.

Örneğin, yöntemine DrawImage yapılan aşağıdaki çağrı (50, 30) öğesinin sol üst köşesini belirtir ancak 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, gerekli bağımsız değişkenlerin DrawImage sayısı açısından yöntemin en kolay sürümü olsa da, en verimli olması şart değildir. GDI+ tarafından kullanılan çözünürlük (genellikle inç başına 96 nokta) nesnede Image depolanan çözünürlükten farklıysa DrawImage , yöntem görüntüyü ölçeklendirir. Örneğin, bir Image nesnenin genişliği 216 piksel ve depolanan yatay çözünürlük değerinin inç başına 72 nokta olduğunu varsayalım. 216/72 3 olduğundan, DrawImage görüntüyü 96 nokta/inç çözünürlükte 3 inç genişliğine sahip olacak şekilde ölçeklendirir. Diğer bir ifadeyle, DrawImage genişliği 96x3 = 288 piksel olan bir görüntü görüntülenir.

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üğü inç başına 96 noktaymış gibi görüntüyü ölçeklendirir. Bunun nedeni, bir GDI+ Graphics nesnesinin bir cihaz bağlamı ile ilişkili olması 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'dır. Yönteminde hedef dikdörtgeni belirterek otomatik ölçeklendirmeyi DrawImage önleyebilirsiniz.

Ö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) özgün 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:

Screenshot that shows images with scaled texture.

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 ile kullanılmak üzere tasarlanmıştır ve olay işleyicisinin Paint parametresi olan öğesini gerektirir.PaintEventArgse Texture.jpg dosyasını sisteminizde geçerli olan bir görüntü adı ve yolla değiştirin.

Ayrıca bkz.