c#当中如何缩放图像

Graphics有个变换矩阵的属性:
Graphics.Transform

相应的方法有:
Graphics.RenderingOrigin// 变换中心属性
Graphics.ResetTransform();// 重置变换矩阵
Graphics.TranslateTransform();// 平移变换
Graphics.RotateTransform();// 旋转变换
Graphics.ScaleTransform();// 缩放变换

 

Image img = new Bitmap(@"d:/My Documents/My Pictures/H2.jpg");
gp.DrawImage(img, new Rectangle(0, 0, 500, 100));
//new Rectangle(0, 0, 500, 100)为会之后的大小,之后可以更其他参数,例如原始图片大小 想绘制什么大小都行。

 

你要不失真的话,就用我给你的解决方案。  
  以下是主要代码:  
  private   void   ComputeImageScale(int   srcWidth,int   srcHeight,ref   int   destWidth,ref   int   destHeight)  
  {  
  if(destWidth   ==   0   ||   destHeight   ==   0)  
  return;  
   
  try  
  {  
  double   scale   =   0;  
  if(srcWidth/destWidth   >   (scale   =   1.0*srcHeight/destHeight))  
  {  
  scale   =   1.0*srcWidth/destWidth;  
  destHeight   =   (int)(srcHeight/scale);  
  }  
  else  
  destWidth   =   (int)(srcWidth/scale);  
  }  
  catch{}  
   
  }  
   
  private   void   TestImgZoom()  
  {  
  string   filePath   =   "C://";  
  switch(this.cmbType.Text)  
  {  
  case   "BMP":  
  filePath   +=   "test.bmp";  
  break;  
  case   "JPG":  
  filePath   +=   "test.jpg";  
  break;  
  case   "GIF":  
  filePath   +=   "test.gif";  
  break;  
  }  
   
  try  
  {  
  Image   img   =   Image.FromFile(filePath);  
   
  int   destWidth   =   0;  
  int   destHeight   =   0;  
   
  if(this.radioLength.Checked)  
  {  
  destWidth   =   Convert.ToInt32(this.txtWidth.Text);  
  destHeight   =   Convert.ToInt32(this.txtHeight.Text);  
  }  
  else  
  {  
  destWidth   =   img.Width/Convert.ToInt32(this.numericUpDownWidth.Value);  
  destHeight   =   img.Height   /Convert.ToInt32(this.numericUpDownHeight.Value);  
  }  
   
  System.Drawing.Imaging.ImageFormat   format   =   img.RawFormat;  
   
  ComputeImageScale(img.Width,img.Height,ref   destWidth,ref   destHeight);  
  Bitmap   bmp   =   new   Bitmap(destWidth,destHeight,img.PixelFormat);  
  //Image   bmp   =   null;  
  Graphics   g   =   Graphics.FromImage(bmp);  
  g.SmoothingMode   =   System.Drawing.Drawing2D.SmoothingMode.HighQuality;  
   
  g.DrawImage(img,new   Rectangle(0,0,destWidth,destHeight),0,0,img.Width,img.Height,GraphicsUnit.Pixel);  
   
  this.pictureBox1.Image   =   bmp;  
  System.Drawing.ImageConverter   imgConvert   =   new   ImageConverter();  
   
  //System.IO.FileStream   stream   =   new   System.IO.FileStream("C:/test1.gif");  
  //System.Drawing.Imaging  
  //bmp.SaveAdd(bmp,  
  //bmp   =   (Bitmap)img.GetThumbnailImage(destWidth,destHeight,null,IntPtr.Zero);  
  //bmp.Save("C://1.gif",format);  
   
  }  
  catch(Exception   ex)  
  {  
  MessageBox.Show(ex.ToString());  
  }  
   
  }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值