C# 图像旋转 例子 代码

 我来答
蚁走天涯路
2016-05-01
知道答主
回答量:22
采纳率:0%
帮助的人:10.1万
展开全部

图像旋转的C#示例:

  private void RotateTransform_Click(object sender, System.EventArgs e)
  {
   Graphics graphics=this.CreateGraphics();
   graphics.Clear(Color.White);

   //装入图片
   Bitmap image=new Bitmap("nemo.bmp");

   //获取当前窗口的中心点
   Rectangle rect=new Rectangle(0,0,this.ClientSize.Width,this.ClientSize.Height);
   PointF center=new PointF(rect.Width/2,rect.Height/2);

   float offsetX=0;
   float offsetY=0;
   offsetX=center.X-image.Width/2;
   offsetY=center.Y-image.Height/2;
   //构造图片显示区域:让图片的中心点与窗口的中心点一致
   RectangleF picRect=new RectangleF(offsetX,offsetY,image.Width,image.Height);
   PointF Pcenter=new PointF(picRect.X+picRect.Width/2,
    picRect.Y+picRect.Height/2);
 
   //让图片绕中心旋转一周
   for(int i=0;i<361;i+=10)
   {
    // 绘图平面以图片的中心点旋转
    graphics.TranslateTransform(Pcenter.X, Pcenter.Y);
    graphics.RotateTransform(i);
    //恢复绘图平面在水平和垂直方向的平移
    graphics.TranslateTransform(-Pcenter.X, -Pcenter.Y);
    //绘制图片并延时
    graphics.DrawImage(image,picRect); 
    Thread.Sleep(100);
    //重置绘图平面的所有变换
    graphics.ResetTransform();
   }
  }

轻舞霓裳a
推荐于2018-03-08 · TA获得超过247个赞
知道答主
回答量:374
采纳率:0%
帮助的人:167万
展开全部
private const string IMAGEFILE = "FocusPoint.JPG";

private static int MyAngle = 0; //旋转角度[-360,360]

private void Page_Load(object sender, EventArgs e)

{

Image img;

FileStream fs;

fs = new FileStream(IMAGEFILE, FileMode.Open, FileAccess.Read);

img = Bitmap.FromStream(fs);

fs.Close();

pictureBox1.Image = img;

}

private void button1_Click(object sender, EventArgs e)

{

MyAngle = 90;

//MyAngle += 90;

//if (MyAngle > 360) MyAngle = 90;

pictureBox1.Image = RotateImg(GetSourceImg(IMAGEFILE), MyAngle);

}

private void button2_Click(object sender, EventArgs e)

{

MyAngle = -90;

//MyAngle += -90;

//if (MyAngle < -360) MyAngle = -90;

//pictureBox1.Image = RotateImg(Bitmap.FromFile(IMAGEFILE), MyAngle);

pictureBox1.Image = RotateImg(IMAGEFILE, MyAngle);

}

#region 图片旋转函数

/// <summary>

/// 以逆时针为方向对图像进行旋转

/// </summary>

/// <param name="b">位图流</param>

/// <param name="angle">旋转角度[0,360](前台给的)</param>

/// <returns></returns>

public 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;

//计算偏移量

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();

//保存旋转后的图片

b.Dispose();

dsImage.Save("FocusPoint.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);

return dsImage;

}

public Image RotateImg(string filename, int angle)

{

return RotateImg(GetSourceImg(filename), angle);

}

public Image GetSourceImg(string filename)

{

Image img;

img = Bitmap.FromFile(filename);

return img;

}

#endregion 图片旋转函数
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
草薙在
2012-06-05 · TA获得超过4795个赞
知道大有可为答主
回答量:6187
采纳率:50%
帮助的人:6250万
展开全部
你可以用Gdi+ 然后RotateTransform,再画一遍就可以了
追问
有代码吗?
追答
木有
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
182*****193
2016-04-15
知道答主
回答量:9
采纳率:0%
帮助的人:2.7万
展开全部
我擦你麻痹你爹工作量
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
不考进年级50不改名
2016-04-23
知道答主
回答量:2
采纳率:0%
帮助的人:2192
展开全部
看见少男少女那叫什么买什么买什么美食
可是看看书考试科目都没苦思苦想,们多么开始,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式