Winform以任意角度旋转PictureBox中的图片的方法
方法1:
private void RotateFormCenter(PictureBox pb, float angle)
{
Image img = pb.Image;
int newWidth = Math.Max(img.Height, img.Width);
Bitmap bmp = new Bitmap(newWidth, newWidth);
Graphics g = Graphics.FromImage(bmp);
Matrix x = new Matrix();
PointF point = new PointF(img.Width / 2f, img.Height / 2f);
x.RotateAt(angle, point);
g.Transform = x;
g.DrawImage(img, 0, 0);
g.Dispose();
img = bmp;
pb.Image = img;
}
该方法通过将图片转化为用于几何变换的3x3矩阵 对图片进行旋转。
缺点:有时图片会越转越模糊。
方法2:
private void RotateFormCenter(PictureBox pb, float angle)
{
Graphics graphics = pb.CreateGraphics();
graphics.Clear(pb.BackColor);
//装入图片
Bitmap image = new Bitmap(pb.Image);
//获取当前窗口的中心点
Rectangle rect = new Rectangle(, , pb.Width, pb.Height);
PointF center = new PointF(rect.Width / , rect.Height / );
float offsetX = ;
float offsetY = ;
offsetX = center.X - image.Width / ;
offsetY = center.Y - image.Height / ;
//构造图片显示区域:让图片的中心点与窗口的中心点一致
RectangleF picRect = new RectangleF(offsetX, offsetY, image.Width, image.Height);
PointF Pcenter = new PointF(picRect.X + picRect.Width / ,
picRect.Y + picRect.Height / );
// 绘图平面以图片的中心点旋转
graphics.TranslateTransform(Pcenter.X, Pcenter.Y);
graphics.RotateTransform(angle);
//恢复绘图平面在水平和垂直方向的平移
graphics.TranslateTransform(-Pcenter.X, -Pcenter.Y);
//绘制图片
graphics.DrawImage(image, picRect);
}
通过操作Graphics进行图像旋转,使用时需要注意图片是按原始大小进行居中旋转 PictureBox的SizeMode属性对这种方法无效。
Winform以任意角度旋转PictureBox中的图片的方法的更多相关文章
- JAVA对图片的任意角度旋转,以及镜像操作
package relevantTest;/* * 该代码实现了对图像的水平镜像变换,垂直镜像变换,任意角度旋转,jtf的实时监控,以及对图像的缩放变换,以及按钮的若隐若现效果. * 在对图像进行任意 ...
- C# 保存PictureBox中的图片到数据库,并从数据库读取图片显示到PictrueBox,解决报错 “无效参数”
下面是两段关键代码: /// <summary> /// 将一张图片转换为字节 /// </summary> /// <param name="img" ...
- 在Altium_Designer_PCB_中插入图片的方法
详细请看PDF: http://files.cnblogs.com/files/BinB-W/在Altium_Designer_PCB_中插入图片的方法.pdf 配套文件: http://files. ...
- 在word中输入任意角度旋转图片
Sub 图片旋转任意角度() Dim sha As Shape, isa As InlineShape Static s As Integer Application.ScreenUpdating = ...
- Java实现图片内容无损任意角度旋转
转自:http://blog.csdn.net/heliang7/article/details/7309394 主要问题是如何在图片做旋转后计算出新图片的长宽. 在java 2d和基本math库的帮 ...
- CSS中背景图片定位方法
转自:http://www.ruanyifeng.com/blog/2008/05/css_background_image_positioning.html 作者: 阮一峰 日期: 2008年5月 ...
- Java中显示图片的方法
最近在做一个swing小项目,其中需要把存储在硬盘中的图片文件显示出来,总结了如下方法: 1. Graphics g = getGraphics();String name = "E:/Ca ...
- Dede 删除文档同时文章中的图片的方法
首先,在"/include"目录下建立"extend.func.php"文件. 然后,将以下内容保存在"extend.func.php"文件 ...
- (转)HTML&CSS——background: url() no-repeat 0 -64px;CSS中背景图片定位方法
http://blog.csdn.net/oscar92420aaa/article/details/51304067 CSS中背景图片的定位,困扰我很久了.今天总算搞懂了,一定要记下来. 在CSS中 ...
随机推荐
- 关于Thomas Brinkhoff移动对象生成器的修改
关于地图数据的写出 控制地图路径数据的输出 修改routing.Edge.java 路径写出源码 public void write (EntryWriter out) { out.print(id) ...
- iOS 沙盒(sandbox)结构 使用 实例
声明:该文档是经过自己查找网上的资料以及自己多年的经验后而总结出来的,希望对大家有所帮助,有什么不恰当支出还请大家多指点! iOS中的沙盒机制(SandBox)是一种安全体系,它规定了应用程序只能在为 ...
- 手动安装m4, autoconf, automake, libtool
转自http://ruby-china.org/topics/2434 系列文章原载于自己的博客,TOPI.CO (http://topi.co) ,某天不小心就push错啦,懒得从头再来,上传到Ru ...
- 关于CMFCPropertyGridFontProperty的赋值问题
CMFCPropertyGridFontProperty是派生于CMFCPropertyGridProperty类的用于字体设置的类.它可以设置字体的名称.大小.粗细等各项参数.但是类并不提供用于初始 ...
- ECharts-基于Canvas,纯Javascript图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表
ECharts http://ecomfe.github.com/echarts 基于Canvas,纯Javascript图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表.创新的拖拽重计算 ...
- spring 自动扫描、注册的类是否可以定义构造函数
答案是肯定的. 方法如下: @Service public class SimpleMovieLister { private MovieFinder movieFinder; @Autowired ...
- php js => splice 数组 插入 功能
php array_splice 手册详解 array_splice - 把数组中的一部分去掉并用其它值取代 参数 input 输入的数组. offset 如果 offset 为正,则从 i ...
- 使用sql更改表的列的数据类型和添加新列和约束
修改数据库表某一列或添加列,转载的哦~ --增加一列 ALTER TABLE 表名 ADD 列名 VARCHAR(20) NULL --删除一列 ALTER TABLE 表名 drop COLUMN ...
- 改变jboss部署目录(虚拟目录)
笔记: 在开发过程中,有时候我们希望将程序放在我们的源代码目录中,比如d:\code下,而不是放在jboss的deploy下,怎么办? 我们知道,jboss中集成了tomcat,因此跟tomcat一样 ...
- svg path中的贝塞尔曲线
首先介绍以下什么是贝塞尔曲线 贝塞尔曲线又叫贝茨曲线(Bezier),由两个端点以及若干个控制点组成,只有两个端点在曲线上,控制点不在曲线上,只是控制曲线的走向. 控制点个数为0时,它是一条直线; 控 ...