C#如何实现图片查看器

2019-12-30 12:06:55于丽

2.2 图片旋转功能的实现
上面的代码实现了第一个功能点的问题了,下面就解释下如何实现第二个功能点——图片旋转的问题:

对于Windows自带的图片查看器,它旋转的角度只能顺时针旋转90或逆时针旋转90度,这个功能实现起来可以说非常简单,只需要使用Image.RotateFlip(RotateFlipType)方法就可以完成的,有些朋友也想对图片实现旋转任意角度,对于这个问题源码中也有具体的实现,大家可以从文章的最后下载源码进行查看,这里就不贴出具体代码的,下面就看看如何实现Windows自带的图片查看器的旋转功能的代码:


 // 顺时针旋转90度旋转图片
  private void btnRotate_Click(object sender, EventArgs e)
  {
   picBoxView.SizeMode = PictureBoxSizeMode.Zoom;
   
   // 顺时针旋转90度的另外一种实现
   newbitmap.RotateFlip(RotateFlipType.Rotate90FlipNone);
   picBoxView.Image = newbitmap;
   isRotate = true;
   //newbitmap = (Image)ImageManager.RotateImg(bitmap, 90f, Color.Transparent); ;
   //bitmap.Dispose();
   //picBoxView.Image = newbitmap;
  }
  
  // 逆时针旋转90度
  private void btncounterclockwiseRotate_Click(object sender, EventArgs e)
  {
   picBoxView.SizeMode = PictureBoxSizeMode.Zoom;
 
   // 逆时针旋转90度的另外实现
   newbitmap.RotateFlip(RotateFlipType.Rotate270FlipNone);
   picBoxView.Image = newbitmap;
   isRotate = true;
   // 下面是旋转任意角度的代码
   //newbitmap = (Image)ImageManager.RotateImg(bitmap, 360f-90f, Color.Transparent); ;
   //bitmap.Dispose();
   //picBoxView.Image = newbitmap;
  }

2.3 对旋转图片的保存功能的实现
最后就是针对旋转图片保存的实现了,此时我参考了Windows自带图片查看器的实现方式,因为我用Windows自带图片查看器浏览图片的实现,当我旋转图片时,它并不是实时地保存到旋转的图片的,而是当我关闭Windows自带图片查看器的时候,旋转的图片才保存到文件中的,有了这个思路之后,我就把我保存的代码逻辑放在窗体的关闭的事件处理程序中来实现的,此时保存的功能我们只需要调用Image.Save(path)方法就可以完成对图片的保存,下面就看看具体代码的实现的:


 // 关闭窗体后保存旋转后的图片到文件中
  private void Form1_FormClosed(object sender, FormClosedEventArgs e)
  {
   if (imgPath == null || isRotate == false)
   {
    return;
   }

   // 保存旋转后的图片
   switch (Path.GetExtension(imgPath).ToLower())
   {
    case ".png":
     newbitmap.Save(imgPath, ImageFormat.Png);
     newbitmap.Dispose();
     break;
    case ".jpg":
     newbitmap.Save(imgPath);
     newbitmap.Dispose();
     break;
    default:
     newbitmap.Save(imgPath, ImageFormat.Bmp);
     newbitmap.Dispose();
     break;
   }
  }