首页 > 编程语言 >C# 图片沿中心点进行角度旋转

C# 图片沿中心点进行角度旋转

时间:2022-11-14 14:13:48浏览次数:67  
标签:cos C# System 旋转 int rect 中心点 Drawing Math

C# 图片沿中心点进行角度旋转

 

Image 图片沿中心点进行任意角度旋转

        public static Image RotateImg(Image b, int angle)
        {
            angle = angle % 360;
            //弧度转换 
            double radian = angle * Math.PI / 180.0;
            double cos = Math.Cos(radian);
            double sin = Math.Sin(radian);
            //原图的宽和高 
            int w = b.Width;
            int h = b.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 dsImage = new Bitmap(W, H);
            System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(dsImage);
            g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.Bilinear;
            g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
            //计算偏移量 
            System.Drawing.Point Offset = new System.Drawing.Point((W - w) / 2, (H - h) / 2);
            //构造图像显示区域:让图像的中心与窗口的中心点一致 
            System.Drawing.Rectangle rect = new System.Drawing.Rectangle(Offset.X, Offset.Y, w, h);
            System.Drawing.Point center = new System.Drawing.Point(rect.X + rect.Width / 2, rect.Y + rect.Height / 2);
            g.TranslateTransform(center.X, center.Y);
            g.RotateTransform(angle);
            //恢复图像在水平和垂直方向的平移 
            g.TranslateTransform(-center.X, -center.Y);
            g.DrawImage(b, rect);
            //重至绘图的所有变换 
            g.ResetTransform();
            g.Save();
            g.Dispose();
            return dsImage;
        }

作者:SunSpring

出处:https://www.cnblogs.com/SunSpring/p/16287318.html

本文版权归作者所有,欢迎转载,但未经作者同意需在文章页面明显位置给出原文链接。

标签:cos,C#,System,旋转,int,rect,中心点,Drawing,Math
From: https://www.cnblogs.com/sexintercourse/p/16888868.html

相关文章

  • centos 8 rc.local不生效的问题
    具体可以操作红帽的官方文档(英文):https://www.jianshu.com/p/96a2075ad784 使rc.local生效的操作如下:chmoda+x/etc/rc.d/rc.localsystemctlenablerc-local......
  • C# 图片处理生成缩略图
    C#图片处理生成缩略图 缩略图通常是将图片内容进行一定的缩小展现,或裁剪展现,主要有两个目的,一是提供一定的预览功能,二是节省屏幕展示空间、节省流量。在网站中我们通......
  • 真趣科技:多业务形态的企业需要灵活可配置的CRM系统
    苏州真趣信息科技有限公司,物联网领域国家高新技术企业。位置物联网领域博士后、博士领衔科研团队,荣获300余项专利、重磅荣誉、国际国内权威机构认证。公司旗下拥有“真趣......
  • C# iText 7 切分PDF,处理PDF页面大小,添加水印
    C#iText7切分PDF,处理PDF页面大小,添加水印 一、itext我要使用itext做一个pdf的页面大小一致性处理,然后再根据数据切分出需要的pdf.iText的官网有关于它的介绍,http......
  • Failed to check the status of the service XXX.XXX. No provider available for the
    TheDubboConsumerCANNOTFIND service 1.检查消费者端配置version是否和提供者一致,有时候你消费者配置version="*"也是不行的2.检查group分组,如果有分组,则检查消......
  • Canal安装配置(消息队列类型:RabbitMQ)
    1.Mysql配置canal支持源端MySQL版本包括5.1.x,5.5.x,5.6.x,5.7.x,8.0.x1.1.查看mysqlbinlog是否开启:SHOWVARIABLESLIKE'log_bin' ON标识开启,如果m......
  • Oracle19c下载、安装及卸载
    1、官网下载地址:DatabaseSoftwareDownloads|Oracle  *安装zip文件,see all文件是对应客户端的下载位置(用于自学无需下载) 2、登陆Oracle账号,若无Oracle......
  • 2022 China Collegiate Programming Contest (CCPC) Weihai Site
    比赛链接:https://codeforces.com/gym/104023A.Dunai题意:\(n\)个队伍获得过冠军,告知每个队伍中的人及对应的位置,现在已知\(m\)个选手及它们的位置,问能组成多少个五......
  • WPF学习 - 用鼠标移动、缩放、旋转图片(1)
    原文网址:https://www.cnblogs.com/raynado/p/16704856.html1.需求其实我的需求很简单。就是想做一个图片查看器,可以通过鼠标来平移、缩放、旋转图片。2.解决思路:......
  • C和C++的区别
    一、面向过程语言和面向对象语言C语言是面向过程语言,而C++是面向对象语言(一)面向过程和面向对象的区别(1)面向过程:面向过程编程就是分析出解决问题的步骤,然后把这些步骤一......