C#实现图像以中心点任意角度旋转

编程开发
940
C#
GDI+
图像旋转
围绕中心点旋
图像以中心点任意角

C#中 GDI+ 实现图像围绕中心点旋转任意角度的方法类

Image自带RotateFlip处理方法可以做到简单的90°、180°等角度的旋转或者翻转,但并没有提供操作具体设置角度的方法,这还不算麻烦的 最主要的是Graphics的旋转和翻转都是以左上角为原点,这点就很难受了。

以下提供一个围绕图片中心进行旋转任意角的的方法

/// 
/// 图片旋转
/// 
/// 
/// 
public static Bitmap Rotate(this Bitmap ImageOriginal, float AngleValue)
{
            AngleValue = AngleValue % 360;
            double radian = AngleValue * Math.PI / 180.0;
            double cos = Math.Cos(radian);
            double sin = Math.Sin(radian);
            int w = ImageOriginal.Width;
            int h = ImageOriginal.Height;
            int W = (int)(Math.Max(Math.Abs(w * cos - h * sin), Math.Abs(w * cos + h * sin)));
            int H = (int)(Math.Max(Math.Abs(w * sin - h * cos), Math.Abs(w * sin + h * cos)));
            Bitmap ImageBaseOriginal = new Bitmap(W, H, PixelFormat.Format24bppRgb);
            System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(ImageBaseOriginal);
            g.InterpolationMode = InterpolationMode.NearestNeighbor;
            g.SmoothingMode = SmoothingMode.HighQuality;
            Point Offset = new Point((W - w) / 2, (H - h) / 2);
            Rectangle rect = new Rectangle(Offset.X, Offset.Y, w, h);
            Point center = new Point(rect.X + rect.Width / 2, rect.Y + rect.Height / 2);
            g.Clear(Color.Transparent);
            g.TranslateTransform(center.X, center.Y);
            g.RotateTransform(360 - AngleValue);
            g.TranslateTransform(-center.X, -center.Y);
            g.DrawImage(ImageOriginal, rect);
            g.ResetTransform();
            g.Save();
            g.Dispose();
            return ImageBaseOriginal;
 }
C# MailKit+MimeKit+QQ邮箱 实现发送邮件的简单例子
.NET开发Bitmap GetPixel,SetPixel处理太慢的替代解决办法
C# 局域网通过Ip获取远程电脑的计算机名称和别名
C#如何利用(Windows Script Host)COM组件来创建快捷方式
C# 判断端口是否正在被其他程序使用着
C# .NET中 使用GDI+ 添加图形水印
C# SetProcessWorkingSetSize 减少内存占用 黑科技
c# 获取本机电脑名称、Ip信息
基于C#人名币基础加减法换算最终得出<元角分>的计算结果的实现
C#获取windows硬盘当前可用的磁盘盘符列表
C#怎么获取windows系统支持的字体以及字体样式
gdi+ Graphics 实现图片拼接排版合并
暂无相关内容...
[人脸检测]基于C#OpenCvSharp+haarcascade人脸、人眼模型实现人脸检测源码
基于.NET4.0实现的目录文件新增监视并自动化上传至ftp完整流程工具源码
.NET5+C# WPF实现图片添加倾斜文字平铺水印工具源码
C#结合虫洞软件(Wormhole)实现自动登录到手机版百度网盘的流程源码
C#基于OpenCVSharp实现图片对比相似度百分比源码下载
免责声明 部分转载分享内容若侵犯您的权益,还请 邮件联系 侵删