ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

C# Graphics 生成文字圆形头像

2021-04-19 17:34:06  阅读:231  来源: 互联网

标签:Width C# bitmap 头像 Graphics new Height size


/// <summary>
        /// 生成圆形头像
        /// </summary>
        /// <param name="text">文本</param>
        /// <param name="path">路径</param>
        /// <returns></returns>
        public static MemoryStream CreateHeadUrl(string text, string path)
        {
            Bitmap bitmap = new Bitmap(200, 200);
            var font = new Font("文泉驿正黑", 40, FontStyle.Bold);
            Graphics g = Graphics.FromImage(bitmap);
            g.Clear(Color.Transparent);
            g.SmoothingMode = SmoothingMode.AntiAlias;
            Rectangle rect = new Rectangle(0, 0, bitmap.Width, bitmap.Height);

            //画圆
            Brush bush = new SolidBrush(ColorTranslator.FromHtml("#F75252"));//填充的颜色
            g.FillEllipse(bush, rect);

            //画圈
            Pen pen = new Pen(Color.FromArgb(255, 196, 196), 16);//画笔颜色             
            g.DrawEllipse(pen, rect);

            //文字居中
            SizeF size = g.MeasureString(text, font);
            int nLeft = Convert.ToInt32((bitmap.Width / 2) - (size.Width / 2));
            int nTop = Convert.ToInt32((bitmap.Height / 2) - (size.Height / 2));
            g.DrawString(text, font, Brushes.White, nLeft, nTop);

            MemoryStream ms = new MemoryStream();
            var bmp = CutEllipse(bitmap, rect, bitmap.Size, path);
            bmp.Save(ms, ImageFormat.Jpeg);
            return ms;
        }

        /// <summary>
        /// 剪裁圆形
        /// </summary>
        /// <param name="img"></param>
        /// <param name="rec"></param>
        /// <param name="size"></param>
        /// <param name="imgSavePath"></param>
        /// <returns></returns>
        private static Bitmap CutEllipse(Image img, Rectangle rec, Size size, string imgSavePath)
        {
            Bitmap bitmap = new Bitmap(size.Width, size.Height);
            using (Graphics g = Graphics.FromImage(bitmap))
            {
                using (TextureBrush br = new TextureBrush(img, WrapMode.Clamp, rec))
                {
                    br.ScaleTransform(bitmap.Width / (float)rec.Width, bitmap.Height / (float)rec.Height);
                    g.SmoothingMode = SmoothingMode.AntiAlias;
                    g.FillEllipse(br, new Rectangle(Point.Empty, size));
                }
            }
            bitmap.Save(imgSavePath, System.Drawing.Imaging.ImageFormat.Png);
            return bitmap;
        }

 

标签:Width,C#,bitmap,头像,Graphics,new,Height,size
来源: https://www.cnblogs.com/Mzg121584668/p/14677792.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有