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

首頁 > 編程 > C# > 正文

C#實現在底圖上動態生成文字和圖片

2020-01-24 00:04:57
字體:
來源:轉載
供稿:網友

本文主要記錄在圖片上動態的生成需要添加的文字和把指定的圖片加到底圖上,直接上代碼

/// <summary>/// 在底圖上畫指定路徑的圖片/// </summary>/// <param name="g">畫板實例</param>/// <param name="path">圖片路徑</param>/// <param name="totalWidth">畫區總長度</param>/// <param name="totalHeight">畫區總高度</param>/// <param name="px">起點X坐標</param>/// <param name="py">起點Y坐標</param>  private void FontPic(ref Graphics g, string path, int totalWidth, int totalHeight, int px, int py)  {   if (File.Exists(path))   {    var pImg = Image.FromFile(path);    //如果圖片大于畫布區域,則縮小    if (totalHeight < pImg.Height && totalWidth < pImg.Width)    {     Image newPic = GetReducedImage(pImg, totalWidth, totalHeight);     if (newPic != null)     {      DrawPic(ref g, totalWidth, totalHeight, px, py, newPic);     }    }    else if (totalHeight < pImg.Height && totalWidth >= pImg.Width)    {     Image newPic = GetReducedImage(pImg, pImg.Width, totalHeight);     if (newPic != null)     {      DrawPic(ref g, totalWidth, totalHeight, px, py, newPic);     }    }    else if (totalHeight >= pImg.Height && totalWidth < pImg.Width)    {     Image newPic = GetReducedImage(pImg, totalWidth, pImg.Height);     if (newPic != null)     {      DrawPic(ref g, totalWidth, totalHeight, px, py, newPic);     }    }    else    {     DrawPic(ref g, totalWidth, totalHeight, px, py, pImg);    }   }  }  /// <summary>  /// 在圖上畫圖片  /// </summary>  /// <param name="g">畫板實例</param>  /// <param name="totalWidth">畫區總長度</param>  /// <param name="totalHeight">畫區總高度</param>  /// <param name="px">起點X坐標</param>  /// <param name="py">起點Y坐標</param>  /// <param name="pImg">要畫的圖片實例</param>  private void DrawPic(ref Graphics g, int totalWidth, int totalHeight, int px, int py, Image pImg)  {   px += GetValue(totalWidth, pImg.Width);   py += GetValue(totalHeight, pImg.Height);    g.DrawImage(new Bitmap(pImg, new Size(GetSize(totalWidth, pImg.Width), GetSize(totalHeight, pImg.Height))),    new Rectangle(px, py, totalWidth, totalHeight),    0, 0, totalWidth, totalHeight, GraphicsUnit.Pixel);  }  /// <summary>   /// 生成縮略圖重載方法1,返回縮略圖的Image對象   /// </summary>   /// <param name="width">縮略圖的寬度</param>   /// <param name="height">縮略圖的高度</param>   /// <returns>縮略圖的Image對象</returns>   public Image GetReducedImage(Image resourceImage, int width, int height)  {   try   {    Image data = null;    //用指定的大小和格式初始化Bitmap類的新實例     using (Bitmap bitmap = new Bitmap(width, height, PixelFormat.Format32bppArgb))    {     //從指定的Image對象創建新Graphics對象      using (Graphics graphics = Graphics.FromImage(bitmap))     {      //清除整個繪圖面并以透明背景色填充       //graphics.Clear(Color.Transparent);      //在指定位置并且按指定大小繪制原圖片對象       graphics.DrawImage(resourceImage, new Rectangle(0, 0, width, height));     }     data = new Bitmap(bitmap);    }    return data;   }   catch (Exception e)   {    throw e;   }  }  /// <summary>  /// 比較兩個值,得到給到給定值(判斷是否越界)  /// </summary>  /// <param name="total">總長度</param>  /// <param name="width">指定長度</param>  /// <returns></returns>  public int GetSize(int total, int width)  {   if (total > width)   {    return width;   }   else   {    return total;   }  }  /// <summary>  /// 更加傳入的值計算得到新值(計算點坐標)  /// </summary>  /// <param name="total">總長度</param>  /// <param name="width">指定長度</param>  /// <returns></returns>  private int GetValue(int total, int width)  {   return (total - width) / 2;  }  /// <summary>  /// 在圖片上畫出文字  /// </summary>  /// <param name="g">圖片對象</param>  /// <param name="pointX">文字x坐標</param>  /// <param name="pointY">文字y坐標</param>  /// <param name="word">文字內容</param>  /// <param name="textWidth">文本寬度</param>  /// <param name="textHeight">文本高度</param>  private static void DrawStringWord(Graphics g, int pointX, int pointY, string word, int textWidth, int textHeight, int fontSize = 30)  {   Font font = new Font("微軟雅黑", fontSize, (FontStyle.Regular));   RectangleF textArea = new RectangleF(pointX, pointY, textWidth, textHeight);   Brush brush = new SolidBrush(Color.Black);   g.DrawString(word, font, brush, textArea);  }

希望對需要這方面操作的朋友有所幫助。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 灯塔市| 蚌埠市| 济阳县| 邢台市| 绥芬河市| 临潭县| 盱眙县| 临安市| 六安市| 岑巩县| 庆阳市| 鹤庆县| 上高县| 利川市| 广东省| 平安县| 子长县| 衡阳县| 和顺县| 绥阳县| 龙泉市| 敖汉旗| 自贡市| 洞头县| 南川市| 中西区| 万全县| 永定县| 睢宁县| 安岳县| 电白县| 西乌| 三河市| 怀柔区| 娱乐| 青神县| 响水县| 瑞金市| 邵阳县| 梁平县| 红安县|