请问如何实现图片旋转功能???

zengzehui 2007-04-28 11:29:42
各位大虾!小弟我是个新手,最近想做一个图片浏览器,但是图片旋转功能就是实现不了.请各位大侠赐教!!!
...全文
321 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
huacha 2007-05-09
  • 打赏
  • 举报
回复
http://www.wave12.com/web/home.asp
缩略图水印组件wsImage3.5
Ki1381 2007-04-28
  • 打赏
  • 举报
回复
更正:

//angle = angle % 360;

注释要去掉。算法其实还是把角度当整数处理的,你可以自己改进
Ki1381 2007-04-28
  • 打赏
  • 举报
回复
Image.RotateFlip可以旋转90度的整数倍

任意角度的算法:


/// <summary>
/// 按任意角度旋转
/// </summary>
/// <param name="bmp">原始Bitmap</param>
/// <param name="angle">旋转角度</param>
/// <returns>输出图</returns>
public static Bitmap KiRotate(Bitmap b, float angle)
{
if (b == null)
{
return null;
}

if (angle == 0) return b;
try
{
//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 dstImage = new Bitmap(W, H);
System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(dstImage);
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
g.SmoothingMode = System.Drawing.Drawing2D.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.TranslateTransform(center.X, center.Y);
g.RotateTransform(360 - angle);

// 恢复图像在水平和垂直方向的平移
g.TranslateTransform(-center.X, -center.Y);

// 绘制旋转后的结果图
g.DrawImage(b, rect);

// 重置绘图的所有变换
g.ResetTransform();
g.Save();
g.Dispose();
return dstImage;
}
catch
{
return null;
}
} // end of Rotate
jin_yong 2007-04-28
  • 打赏
  • 举报
回复
你要做的 得重新计算图片大小 和坐标转换 具体不是特别清除以前做过放大和缩小 以及效果显示 帮你顶下
ismezy2002 2007-04-28
  • 打赏
  • 举报
回复
最简单的方法就是将头左倾斜至90度,呵呵
jetxia 2007-04-28
  • 打赏
  • 举报
回复
快升星了 多接点分

110,569

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧