2013-06-25 175 views
0

我想這對那些更頻繁地使用GDI的人來說很簡單。我有一張我想旋轉的圖像。圖像旋轉與白色背景

樣品圖片:

before rotation

我申請我的旋轉後,它看起來像如下:

enter image description here

這裏使用的代碼:

public Bitmap RotateBitmap(Bitmap bitmap, float angle) 
{ 
    using (Graphics graphics = Graphics.FromImage(bitmap)) 
    { 
     graphics.TranslateTransform((float)bitmap.Width/2, (float)bitmap.Height/2); 
     graphics.RotateTransform(angle); 
     graphics.TranslateTransform(-(float)bitmap.Width/2, -(float)bitmap.Height/2); 
     graphics.DrawImage(bitmap, new Point(0, 0)); 
    } 
    return bitmap; 
} 

什麼我想擺脫o f是旋轉之前保留的圖像部分。在致電DrawImage之前,任何嘗試使用DrawRectangleClear都會給我白色圖像,這會產生某種意義。

回答

1

嘗試以下操作:

public Bitmap RotateBitmap(Image bitmap, float angle) { 
    Bitmap result = new Bitmap(bitmap.Width, bitmap.Height, bitmap.PixelFormat); 
    using(Graphics graphics = Graphics.FromImage(result)) { 
     graphics.TranslateTransform((float)bitmap.Width/2f, (float)bitmap.Height/2f); 
     graphics.RotateTransform(angle); 
     graphics.TranslateTransform(-(float)bitmap.Width/2f, -(float)bitmap.Height/2f); 
     graphics.DrawImage(bitmap, Point.Empty); 
    } 
    return result; 
} 
+0

我已經試過了,'result'仍然包含未旋轉圖像。 –

+0

@SebastianEdelmeier請再次檢查我的代碼 - 此代碼將旋轉的圖像繪製成新的位圖。它和我預期的一樣。 – DmitryG

+0

對不起,我的錯!你完全正確 - 它按預期工作! –