GDI+'da Görüntü Kırpma ve Ölçeklendirme

Vektör görüntülerini ve DrawImage tarama görüntülerini çizmek ve Graphics konumlandırmak için sınıfının yöntemini kullanabilirsiniz. DrawImage aşırı yüklenmiş bir yöntemdir, bu nedenle bunu bağımsız değişkenlerle sağlamak için çeşitli yollar vardır.

DrawImage Çeşitlemeleri

Yöntemin bir DrawImage varyasyonu ve BitmapRectangle alır. Dikdörtgen, çizim işlemi için hedefi belirtir; diğer bir ifadeyle, görüntünün çizil olduğu dikdörtgeni belirtir. Hedef dikdörtgenin boyutu özgün görüntünün boyutundan farklı ise görüntü, hedef dikdörtgene sığacak şekilde ölçeklendirilecek şekilde ölçeklendirilecek. Aşağıdaki kod örneğinde aynı görüntünün üç kez nasıl çizilmesi gerekir: bir kez ölçeklendirmesi, biri genişletme, biri sıkıştırma:

Bitmap myBitmap = new Bitmap("Spiral.png");

Rectangle expansionRectangle = new Rectangle(135, 10,
   myBitmap.Width, myBitmap.Height);

Rectangle compressionRectangle = new Rectangle(300, 10,
   myBitmap.Width / 2, myBitmap.Height / 2);

myGraphics.DrawImage(myBitmap, 10, 10);
myGraphics.DrawImage(myBitmap, expansionRectangle);
myGraphics.DrawImage(myBitmap, compressionRectangle);
Dim myBitmap As New Bitmap("Spiral.png")

Dim expansionRectangle As New Rectangle(135, 10, _
   myBitmap.Width, myBitmap.Height)

Dim compressionRectangle As New Rectangle(300, 10, _
   CType(myBitmap.Width / 2, Integer), CType(myBitmap.Height / 2, Integer))

myGraphics.DrawImage(myBitmap, 10, 10)
myGraphics.DrawImage(myBitmap, expansionRectangle)
myGraphics.DrawImage(myBitmap, compressionRectangle)

Aşağıdaki çizimde üç resim gösterilmiştir.

Scaling

Yöntemin bazı DrawImage çeşitlemeleri, hedef dikdörtgen parametresinin yanı sıra kaynak dikdörtgen parametresine de sahip olur. Kaynak dikdörtgen parametresi, çizilen özgün görüntünün bölümünü belirtir. Hedef dikdörtgen, görüntünün o kısmının çizilecek dikdörtgeni belirtir. Hedef dikdörtgenin boyutu kaynak dikdörtgenin boyutundan farklı ise, resim hedef dikdörtgene sığacak şekilde ölçeklendirilecek şekilde ölçeklendirildi.

Aşağıdaki kod örneğinde, dosya dosyasından Bitmap bir oluşturma Runner.jpg. Görüntünün tamamı ölçeklendirilemeden (0, 0) çizilir. Ardından görüntünün küçük bir kısmı iki kez çizilir: bir kez sıkıştırma ve bir genişletme ile.

Bitmap myBitmap = new Bitmap("Runner.jpg");

// One hand of the runner
Rectangle sourceRectangle = new Rectangle(80, 70, 80, 45);

// Compressed hand
Rectangle destRectangle1 = new Rectangle(200, 10, 20, 16);

// Expanded hand
Rectangle destRectangle2 = new Rectangle(200, 40, 200, 160);

// Draw the original image at (0, 0).
myGraphics.DrawImage(myBitmap, 0, 0);

// Draw the compressed hand.
myGraphics.DrawImage(
   myBitmap, destRectangle1, sourceRectangle, GraphicsUnit.Pixel);

// Draw the expanded hand.
myGraphics.DrawImage(
   myBitmap, destRectangle2, sourceRectangle, GraphicsUnit.Pixel);
Dim myBitmap As New Bitmap("Runner.jpg")

' One hand of the runner
Dim sourceRectangle As New Rectangle(80, 70, 80, 45)

' Compressed hand
Dim destRectangle1 As New Rectangle(200, 10, 20, 16)

' Expanded hand
Dim destRectangle2 As New Rectangle(200, 40, 200, 160)

' Draw the original image at (0, 0).
myGraphics.DrawImage(myBitmap, 0, 0)

' Draw the compressed hand.
myGraphics.DrawImage( _
   myBitmap, destRectangle1, sourceRectangle, GraphicsUnit.Pixel)

' Draw the expanded hand. 
myGraphics.DrawImage( _
   myBitmap, destRectangle2, sourceRectangle, GraphicsUnit.Pixel)

Aşağıdaki çizimde, ölçeksiz görüntü ile sıkıştırılmış ve genişletilmiş görüntü bölümleri gösterilmiştir.

Cropping and Scaling

Ayrıca bkz.