C# 如何将位图旋转任意度数?

C# 如何将位图旋转任意度数?,c#,bitmap,rotation,C#,Bitmap,Rotation,我有一个位图: Bitmap UnitImageBMP 我需要把它旋转任意角度。我该怎么做?RotateFlip方法只能以90度的增量旋转。我对您进行了一些搜索,发现了以下内容: public static Bitmap RotateImage(Bitmap b, float angle) { //create a new empty bitmap to hold rotated image Bitmap returnBitmap = new Bitmap(b.Width, b.Hei

我有一个位图:

Bitmap UnitImageBMP

我需要把它旋转任意角度。我该怎么做?RotateFlip方法只能以90度的增量旋转。

我对您进行了一些搜索,发现了以下内容:

public static Bitmap RotateImage(Bitmap b, float angle)
{
  //create a new empty bitmap to hold rotated image
  Bitmap returnBitmap = new Bitmap(b.Width, b.Height);
  //make a graphics object from the empty bitmap
  using(Graphics g = Graphics.FromImage(returnBitmap)) 
  {
      //move rotation point to center of image
      g.TranslateTransform((float)b.Width / 2, (float)b.Height / 2);
      //rotate
      g.RotateTransform(angle);
      //move image back
      g.TranslateTransform(-(float)b.Width / 2, -(float)b.Height / 2);
      //draw passed in image onto graphics object
      g.DrawImage(b, new Point(0, 0)); 
  }
  return returnBitmap;
}

这可能有效,但也存在一些问题。首先,如果位图图像是矩形,则新位图图像将截断图像。这大概可以通过使新位图成为最大边的正方形来解决。然而,即使这样做了,我也在经历剪辑。如果可以的话,我会贴一张照片。我在某种程度上解决了这个问题。我只是将我的原始位图图像做成一个正方形(带有额外的空白)。RotateImage代码现在可以正常工作了,我将转换后的图像以白色显示为透明。多懒的回答啊!你从这里复制并粘贴了这段代码:你说懒答案,我说懒问题——我至少把询问者连接到了另一个源代码。虽然我承认我应该和它联系起来。