国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

C#正方形圖片的繪制方法

2019-10-29 19:58:31
字體:
供稿:網(wǎng)友

本文實(shí)例為大家分享了C#繪制正方形圖片的的具體代碼,供大家參考,具體內(nèi)容如下

using System;using System.Collections.Generic;using System.Drawing;using System.Drawing.Drawing2D;using System.Drawing.Imaging;using System.Linq;using System.Text;using System.Threading.Tasks;namespace treads{  /// <summary>  /// 制作小正方形  /// </summary>  class Class3  {    private string srcFileName = @"x";//獲取圖片的路徑    private string srcFileName1 = @"x";//要保持圖片的新路徑       /// <summary>    /// 保存圖片    /// </summary>    /// <param name="image">Image 對(duì)象</param>    /// <param name="savePath">保存路徑</param>    /// <param name="ici">指定格式的編解碼參數(shù)</param>    private static void SaveImage(Image image, string savePath, ImageCodecInfo ici)    {      //設(shè)置 原圖片 對(duì)象的 EncoderParameters 對(duì)象      EncoderParameters parameters = new EncoderParameters(1);      parameters.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, ((long)100));      image.Save(savePath, ici, parameters);      parameters.Dispose();    }    /// <summary>    /// 獲取圖像編碼解碼器的所有相關(guān)信息    /// </summary>    /// <param name="mimeType">包含編碼解碼器的多用途網(wǎng)際郵件擴(kuò)充協(xié)議 (MIME) 類型的字符串</param>    /// <returns>返回圖像編碼解碼器的所有相關(guān)信息</returns>    private static ImageCodecInfo GetCodecInfo(string mimeType)    {      ImageCodecInfo[] CodecInfo = ImageCodecInfo.GetImageEncoders();      foreach (ImageCodecInfo ici in CodecInfo)      {        if (ici.MimeType == mimeType)          return ici;      }      return null;    }    /// <summary>    /// 計(jì)算新尺寸    /// </summary>    /// <param name="width">原始寬度</param>    /// <param name="height">原始高度</param>    /// <param name="maxWidth">最大新寬度</param>    /// <param name="maxHeight">最大新高度</param>    /// <returns></returns>    private static Size ResizeImage(int width, int height, int maxWidth, int maxHeight)    {      //此次2012-02-05修改過=================      if (maxWidth <= 0)        maxWidth = width;      if (maxHeight <= 0)        maxHeight = height;      //以上2012-02-05修改過=================      decimal MAX_WIDTH = (decimal)maxWidth;      decimal MAX_HEIGHT = (decimal)maxHeight;      decimal ASPECT_RATIO = MAX_WIDTH / MAX_HEIGHT;      int newWidth, newHeight;      decimal originalWidth = (decimal)width;      decimal originalHeight = (decimal)height;      if (originalWidth > MAX_WIDTH || originalHeight > MAX_HEIGHT)      {        decimal factor;        // determine the largest factor         if (originalWidth / originalHeight > ASPECT_RATIO)        {          factor = originalWidth / MAX_WIDTH;          newWidth = Convert.ToInt32(originalWidth / factor);          newHeight = Convert.ToInt32(originalHeight / factor);        }        else        {          factor = originalHeight / MAX_HEIGHT;          newWidth = Convert.ToInt32(originalWidth / factor);          newHeight = Convert.ToInt32(originalHeight / factor);        }      }      else      {        newWidth = width;        newHeight = height;      }      return new Size(newWidth, newHeight);    }    /// <summary>    /// 得到圖片格式    /// </summary>    /// <param name="name">文件名稱</param>    /// <returns></returns>    public static ImageFormat GetFormat(string name)    {      string ext = name.Substring(name.LastIndexOf(".") + 1);      switch (ext.ToLower())      {        case "jpg":        case "jpeg":          return ImageFormat.Jpeg;        case "bmp":          return ImageFormat.Bmp;        case "png":          return ImageFormat.Png;        case "gif":          return ImageFormat.Gif;        default:          return ImageFormat.Jpeg;      }    }       /// <summary>    /// 制作小正方形    /// </summary>    /// <param name="image">圖片對(duì)象</param>    /// <param name="newFileName">新地址</param>    /// <param name="newSize">長度或?qū)挾?lt;/param>    public static void MakeSquareImage(Image image, string newFileName, int newSize)    {      int i = 0;      int width = image.Width;      int height = image.Height;      if (width > height)        i = height;      else        i = width;      Bitmap b = new Bitmap(newSize, newSize);      try      {        Graphics g = Graphics.FromImage(b);        //設(shè)置高質(zhì)量插值法        g.InterpolationMode = InterpolationMode.HighQualityBicubic;        //設(shè)置高質(zhì)量,低速度呈現(xiàn)平滑程度        g.SmoothingMode = SmoothingMode.AntiAlias;        g.PixelOffsetMode = PixelOffsetMode.HighQuality;        //清除整個(gè)繪圖面并以透明背景色填充        g.Clear(Color.Transparent);        if (width < height)          g.DrawImage(image, new Rectangle(0, 0, newSize, newSize), new Rectangle(0, (height - width) / 2, width, width), GraphicsUnit.Pixel);        else          g.DrawImage(image, new Rectangle(0, 0, newSize, newSize), new Rectangle((width - height) / 2, 0, height, height), GraphicsUnit.Pixel);        SaveImage(b, newFileName, GetCodecInfo("image/" + GetFormat(newFileName).ToString().ToLower()));      }      finally      {        image.Dispose();        b.Dispose();      }    }    /// <summary>    /// 制作小正方形    /// </summary>    /// <param name="fileName">圖片文件名</param>    /// <param name="newFileName">新地址</param>    /// <param name="newSize">長度或?qū)挾?lt;/param>    public static void MakeSquareImage(string fileName,string newFileName, int newSize)    {      MakeSquareImage(Image.FromFile(fileName), newFileName, newSize);    }  }}

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持VEVB武林網(wǎng)。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到c#教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 东乡| 克东县| 腾冲县| 乡宁县| 长治市| 板桥市| 阜南县| 广汉市| 芦溪县| 慈利县| 安龙县| 桦甸市| 西峡县| 塘沽区| 枞阳县| 宁南县| 阿拉善左旗| 岑巩县| 庆阳市| 古浪县| 长宁区| 昔阳县| 寿阳县| 榕江县| 徐汇区| 伽师县| 灵川县| 克拉玛依市| 大余县| 临沧市| 昌黎县| 侯马市| 隆昌县| 庄浪县| 同德县| 博野县| 香格里拉县| 金塔县| 南靖县| 财经| 太仆寺旗|