C# 任意角度旋轉 Bitmap 範例

C# 任意角度旋轉 Bitmap 範例

C# 任意角度旋轉 Bitmap 範例


資料來源: chatgpt


code

public static Bitmap RotateImage(Bitmap bmp, float angle)
{
    // 建立一個新的空白 Bitmap,足以容納旋轉後的圖
    int w = bmp.Width;
    int h = bmp.Height;
    double rad = angle * Math.PI / 180;
    double cos = Math.Abs(Math.Cos(rad));
    double sin = Math.Abs(Math.Sin(rad));

    int newW = (int)(w * cos + h * sin);
    int newH = (int)(w * sin + h * cos);

    Bitmap rotatedBmp = new Bitmap(newW, newH);
    rotatedBmp.SetResolution(bmp.HorizontalResolution, bmp.VerticalResolution);

    using (Graphics g = Graphics.FromImage(rotatedBmp))
    {
        g.TranslateTransform(newW / 2f, newH / 2f);  // 移動到中心
        g.RotateTransform(angle);                    // 旋轉
        g.TranslateTransform(-w / 2f, -h / 2f);       // 移回圖片原點
        g.DrawImage(bmp, new Point(0, 0));
    }

    return rotatedBmp;
}

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *