全网整合营销服务商

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

免费咨询热线: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 


相关文章: 建站之星云端配置指南:模板选择与SEO优化一键生成  制作企业网站建设方案,怎样建设一个公司网站?  h5在线制作网站电脑版下载,h5网页制作软件?  韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐  如何设计高效校园网站?  网站插件制作软件免费下载,网页视频怎么下到本地插件?  建站VPS推荐:2025年高性能服务器配置指南  英语简历制作免费网站推荐,如何将简历翻译成英文?  seo网站制作优化,网站SEO优化步骤有哪些?  如何零成本快速生成个人自助网站?  如何用低价快速搭建高质量网站?  定制建站策划方案_专业建站与网站建设方案一站式指南  建站之星后台管理:高效配置与模板优化提升用户体验  c++怎么编写动态链接库dll_c++ __declspec(dllexport)导出与调用【方法】  建站之星伪静态规则如何设置?  香港服务器建站指南:免备案优势与SEO优化技巧全解析  如何快速搭建二级域名独立网站?  建站之星安装步骤有哪些常见问题?  c++怎么用jemalloc c++替换默认内存分配器【性能】  网站视频怎么制作,哪个网站可以免费收看好莱坞经典大片?  开封网站制作公司,网络用语开封是什么意思?  如何批量查询域名的建站时间记录?  如何在阿里云虚拟服务器快速搭建网站?  外贸公司网站制作哪家好,maersk船公司官网?  魔方云NAT建站如何实现端口转发?  高端网站建设与定制开发一站式解决方案 中企动力  无锡制作网站公司有哪些,无锡优八网络科技有限公司介绍?  头像制作网站在线制作软件,dw网页背景图像怎么设置?  表情包在线制作网站免费,表情包怎么弄?  网站制作软件免费下载安装,有哪些免费下载的软件网站?  如何选择建站程序?包含哪些必备功能与类型?  香港服务器网站推广:SEO优化与外贸独立站搭建策略  小程序网站制作需要准备什么资料,如何制作小程序?  如何用IIS7快速搭建并优化网站站点?  建站之星价格显示格式升级,你的预算足够吗?  如何在宝塔面板中修改默认建站目录?  nginx修改上传文件大小限制的方法  Python文件管理规范_工程实践说明【指导】  宝塔建站无法访问?如何排查配置与端口问题?  上海网站制作开发公司,上海买房比较好的网站有哪些?  青岛网站设计制作公司,查询青岛招聘信息的网站有哪些?  高防服务器如何保障网站安全无虞?  C++ static_cast和dynamic_cast区别_C++静态转换与动态类型安全转换  如何用狗爹虚拟主机快速搭建网站?  如何用花生壳三步快速搭建专属网站?  北京制作网站的公司,北京铁路集团官方网站?  制作电商网页,电商供应链怎么做?  ppt在线制作免费网站推荐,有什么下载免费的ppt模板网站?  建站之星代理商如何保障技术支持与售后服务?  网站制作和推广的区别,想自己建立一个网站做推广,有什么快捷方法马上做好一个网站? 

您的项目需求

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