全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

C#实现缩放和剪裁图片的方法示例

本文实例讲述了C#实现缩放和剪裁图片的方法。分享给大家供大家参考,具体如下:

using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
namespace Project
{
  class ImageOperation
  {
    /// <summary>
    /// Resize图片
    /// </summary>
    /// <param name="bmp">原始Bitmap </param>
    /// <param name="newW">新的宽度</param>
    /// <param name="newH">新的高度</param>
    /// <param name="Mode">保留着,暂时未用</param>
    /// <returns>处理以后的图片</returns>
    public static Bitmap ResizeImage(Bitmap bmp, int newW, int newH, int Mode)
    {
      try
      {
        Bitmap b = new Bitmap(newW, newH);
        Graphics g = Graphics.FromImage(b);
        // 插值算法的质量
        g.InterpolationMode = InterpolationMode.HighQualityBicubic;
        g.DrawImage(bmp, new Rectangle(0, 0, newW, newH), new Rectangle(0, 0, bmp.Width, bmp.Height), GraphicsUnit.Pixel);
        g.Dispose();
        return b;
      }
      catch
      {
        return null;
      }
    }
    /// <summary>
    /// 剪裁 -- 用GDI+
    /// </summary>
    /// <param name="b">原始Bitmap</param>
    /// <param name="StartX">开始坐标X</param>
    /// <param name="StartY">开始坐标Y</param>
    /// <param name="iWidth">宽度</param>
    /// <param name="iHeight">高度</param>
    /// <returns>剪裁后的Bitmap</returns>
    public static Bitmap Cut(Bitmap b, int StartX, int StartY, int iWidth, int iHeight)
    {
      if (b == null)
      {
        return null;
      }
      int w = b.Width;
      int h = b.Height;
      if (StartX >= w || StartY >= h)
      {
        return null;
      }
      if (StartX + iWidth > w)
      {
        iWidth = w - StartX;
      }
      if (StartY + iHeight > h)
      {
        iHeight = h - StartY;
      }
      try
      {
        Bitmap bmpOut = new Bitmap(iWidth, iHeight, PixelFormat.Format24bppRgb);
        Graphics g = Graphics.FromImage(bmpOut);
        g.DrawImage(b, new Rectangle(0, 0, iWidth, iHeight), new Rectangle(StartX, StartY, iWidth, iHeight), GraphicsUnit.Pixel);
        g.Dispose();
        return bmpOut;
      }
      catch
      {
        return null;
      }
    }
  }
}

目标其实都是new Rectangle(0, 0, iWidth, iHeight),缩放算法把整个原始图都往目标区域里塞new Rectangle(0, 0, bmp.Width, bmp.Height),而剪裁只是把原始区域上等宽等高的那个区域new Rectangle(StartX, StartY, iWidth, iHeight)1:1的塞到目标区域里。

更多关于C#相关内容感兴趣的读者可查看本站专题:《C#图片操作技巧汇总》、《C#常见控件用法教程》、《WinForm控件用法总结》、《C#数据结构与算法教程》、《C#面向对象程序设计入门教程》及《C#程序设计之线程使用技巧总结》

希望本文所述对大家C#程序设计有所帮助。


# C#  # 缩放  # 剪裁  # 图片  # C#图片按比例缩放实例  # JS实现按比例缩放图片的方法(附C#版代码)  # C#图片按比例缩放的实现代码  # c#图片缩放图片剪切功能实现(等比缩放)  # C#如何实现图片的剪裁并保存  # c# Base64编码和图片的互相转换代码  # C#保存图片到数据库并读取显示图片的方法  # C#图片压缩的实现方法  # C#实现图片分割方法与代码  # C#(.net)水印图片的生成完整实例  # 程序设计  # 都是  # 相关内容  # 感兴趣  # 数据结构  # 给大家  # 更多关于  # 所述  # 使用技巧  # 面向对象  # 等高  # 操作技巧  # 插值  # 讲述了  # summary  # gt  # Resize  # Project  # ImageOperation  # lt 


相关文章: 我的世界制作壁纸网站下载,手机怎么换我的世界壁纸?  c++ stringstream用法详解_c++字符串与数字转换利器  香港服务器WordPress建站指南:SEO优化与高效部署策略  如何高效利用亚马逊云主机搭建企业网站?  建站之星与建站宝盒如何选择最佳方案?  如何访问已购建站主机并解决登录问题?  家庭建站与云服务器建站,如何选择更优?  巅云智能建站系统:可视化拖拽+多端适配+免费模板一键生成  如何做网站制作流程,*游戏网站怎么搭建?  网站制作话术技巧,网站推广做的好怎么话术?  建站之星伪静态规则如何正确配置?  如何优化Golang Web性能_Golang HTTP服务器性能提升方法  智能起名网站制作软件有哪些,制作logo的软件?  内网网站制作软件,内网的网站如何发布到外网?  自助网站制作软件,个人如何自助建网站?  购物网站制作公司有哪些,哪个购物网站比较好?  高端智能建站公司优选:品牌定制与SEO优化一站式服务  一键网站制作软件,义乌购一件代发流程?  如何获取开源自助建站系统免费下载链接?  简历在线制作网站免费,免费下载个人简历的网站是哪些?  教学论文网站制作软件有哪些,写论文用什么软件 ?  高防服务器租用首荐平台,企业级优惠套餐快速部署  如何通过PHP快速构建高效问答网站功能?  如何在阿里云通过域名搭建网站?  洛阳网站制作公司有哪些,洛阳的招聘网站都有哪些?  单页制作网站有哪些,朋友给我发了一个单页网站,我应该怎么修改才能把他变成自己的呢,请求高手指点迷津?  山东云建站价格为何差异显著?  小米网站链接制作教程,请问miui新增网页链接调用服务有什么用啊?  交易网站制作流程,我想开通一个网站,注册一个交易网址,需要那些手续?  建站之星安装模板失败:服务器环境不兼容?  北京专业网站制作设计师招聘,北京白云观官方网站?  建站主机服务器选购指南:轻量应用与VPS配置解析  网站制作的软件有哪些,制作微信公众号除了秀米还有哪些比较好用的平台?  湖南网站制作公司,湖南上善若水科技有限公司做什么的?  h5网站制作工具有哪些,h5页面制作工具有哪些?  C#怎么使用委托和事件 C# delegate与event编程方法  活动邀请函制作网站有哪些,活动邀请函文案?  如何在阿里云域名上完成建站全流程?  建站之星如何修改网站生成路径?  济南专业网站制作公司,济南信息工程学校怎么样?  开源网站制作软件,开源网站什么意思?  如何零基础开发自助建站系统?完整教程解析  网站制作培训多少钱一个月,网站优化seo培训课程有哪些?  深圳企业网站制作设计,在深圳如何网上全流程注册公司?  建站之星五站合一营销型网站搭建攻略,流量入口全覆盖优化指南  如何快速启动建站代理加盟业务?  建站之星如何快速更换网站模板?  公众号网站制作网页,微信公众号怎么制作?  JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)  如何在IIS中配置站点IP、端口及主机头? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。