winform下的简单图片缩放

1.创建一个list,用于记录缩放状态。

 public List<int> zoomList = new List<int>(); 

2.创建一个位图文件,用于存放缩放后的最新图片。

 public Bitmap globalBitMap;

3.图片缩小代码:

   zoomList.Add(-1);
   if (zoomList.Count > 0 && zoomList.Count(p => p > 0) == zoomList.Count(p => p < 0))
   {
       Bitmap bm = globalBitMap;
       panel1.BackgroundImage = bm;
       zoomList.Clear();
   }
   else
   {
       Bitmap bm = panel1.BackgroundImage as Bitmap;
       panel1.BackgroundImage = GetResizeImage(bm, 1 / 0.9);
   }

4.图片扩大的代码:

  zoomList.Add(1);
  if (zoomList.Count > 0 && zoomList.Count(p => p > 0) == zoomList.Count(p => p < 0))
  {
      Bitmap bm = globalBitMap;
      panel1.BackgroundImage = bm;
      zoomList.Clear();
  }
  else
  {
      Bitmap bm = panel1.BackgroundImage as Bitmap;
      panel1.BackgroundImage = GetResizeImage(bm, 0.9);
  }

5.缩放函数的代码:

private Bitmap GetResizeImage(Bitmap bm, double times)
{ 
  int nowWidth = (int)(bm.Width / times);
  int nowHeight = (int)(bm.Height / times);
  Bitmap newbm = new Bitmap(nowWidth, nowHeight);//新建一个放大后大小的图片

  if (times >= 1 && times <= 1.1)
  {
      newbm = bm;
  }
  else
  {  
      System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(newbm);
      g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
      g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
      g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;

      g.DrawImage(bm, new System.Drawing.Rectangle(0, 0, nowWidth, nowHeight), new System.Drawing.Rectangle(0, 0, bm.Width, bm.Height), GraphicsUnit.Pixel);
      g.Dispose();
  }
  return newbm;
}

6.说明:
上述缩放的比例是0.9或10/9, 使用的是gdi+封装的缩放函数。

panel1 是一个panel控件,这里缩放的是它的背景图。 缩放后直接体现在背景图上。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值