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中 ...
随机推荐
- oracle异常写法
EXCEPTION WHEN OTHERS THEN V_ALARM_MSG := SQLERRM; --错误日志表 V_SQLTEXT := 'CALL DD_PAK.ERRLOG(:V1,:V2, ...
- 一、javase学习:数据库操作练习
package JDBC_TEST; import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLExcept ...
- NSMutableAttributedString的使用
1.设置字符串中数字字符串的颜色: // 设置字符串中数字的颜色 - (void)setTextColor:(UILabel *)label FontNumber:(id)font AndRange: ...
- css3 animation动画特效插件的巧用
这一个是css3 animation动画特效在线演示的网站 https://daneden.github.io/animate.css/ 下载 animate.css文件,文件的代码很多,不过要明白 ...
- List<Map<String,Object>>使用Java代码遍历
List<Map<String,Object>>的结果集怎么使用Java代码遍历以获取String,Object的值: package excel; import java.u ...
- 利用反射与dom4j读取javabean生成对应XML和读取XML得到对应的javabean对象集合
转自:http://blog.csdn.net/zhao19861029/article/details/8473245 首先实现生成对应的JAVAbean的XML文件方法 /** * DMO4J写入 ...
- EF MYSQL 不能选择实体框架版本
web.config文件里面加如下配置,然后编译 <provider invariantName="MySql.Data.MySqlClient" type="My ...
- asp.net下AjaxMethod的使用方法
使用AjaxMethod可以在客户端异步调用服务端方法,简单地说就是在JS里调用后台.cs文件里的方法, 做一些JS无法做到的操作,如查询数据库 使用AjaxMethod要满足一下几点: 1.如果还没 ...
- odoo 10 生产自动领料
分析源码 当 原材料的 补货规则 的 "补货位置" location_id 是 生产单 的 原材料 "目标位置 ", 并且 原材料的 补货规则 的 " ...
- boot from volume
nova boot --flavor 1 --block-device source=image,id=<image_id>,dest=volume,size=5,shutdown=pre ...