2013-06-25 8 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; 
} 

Что Я хочу избавиться от f - часть изображения, которое остается там до вращения. Любые попытки использовать DrawRectangle и Clear перед вызовом DrawImage дали мне белые изображения, что делает какой-то смысл.

ответ

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

Извините, моя ошибка! Вы абсолютно правы - это работает так, как ожидалось! –