2009-08-18 89 views
2

找到一個函數或方法來做我想找的事情有一個小問題,希望有人能夠在這裏提供一些見解。Drawing.Graphics - 更改源位圖的像素偏移量的方法?

我有一個函數,應該從一個更大的位圖中提取並返回一個32x32px的位圖,其中有一組32x32的瓷磚。

這裏是我現在的代碼,但它是錯誤的,因爲Tile.GFX_Pos屬性告訴它在要繪製的目標圖像中的哪個位置,而不是源圖像中要繪製的位置。

Overloads Shared Function TileGFX(ByVal SrcGFX As Bitmap, ByVal Tile As TileDef) As System.Drawing.Bitmap 
     Try 
      Dim GFX As Bitmap = TileBitmap() 
      Dim GGFX As Graphics = Graphics.FromImage(GFX) 
      GGFX.DrawImageUnscaledAndClipped(SrcGFX, New Rectangle(Tile.GFXXPos, Tile.GFXYPos, TileSize, TileSize)) 

      Return GFX 
     Catch ex As Exception 
      Return TileBitmap() 
     End Try 
    End Function 

如此以來,這是不行的,我不知道是如果有人知道一個好辦法,選擇其中的SrcGFX位從位塊傳輸,而不是,(按當前和不正確地)在其中選擇目的地位圖blit。

回答

1

使用DrawImage()方法代替DrawImageUnscaledAndClipped()。 DrawImage有超過十億個重載(好,30),包括一堆讓你指定源和目的地的位置。

+0

這樣做,謝謝。我以前沒有看到過載! – Sukasa 2009-08-18 02:17:18