为了账号安全,请及时绑定邮箱和手机立即绑定

如何在运行时动态地从文本生成图像

如何在运行时动态地从文本生成图像

C#
慕田峪9158850 2019-10-25 15:34:57
任何人都可以指导如何从输入文本生成图像。图片可能有任何扩展名都没关系。
查看完整描述

3 回答

?
慕勒3428872

TA贡献1848条经验 获得超6个赞

好的,假设您想在C#中的图像上绘制字符串,则需要在此处使用System.Drawing命名空间:


private Image DrawText(String text, Font font, Color textColor, Color backColor)

{

    //first, create a dummy bitmap just to get a graphics object

    Image img = new Bitmap(1, 1);

    Graphics drawing = Graphics.FromImage(img);


    //measure the string to see how big the image needs to be

    SizeF textSize = drawing.MeasureString(text, font);


    //free up the dummy image and old graphics object

    img.Dispose();

    drawing.Dispose();


    //create a new image of the right size

    img = new Bitmap((int) textSize.Width, (int)textSize.Height);


    drawing = Graphics.FromImage(img);


    //paint the background

    drawing.Clear(backColor);


    //create a brush for the text

    Brush textBrush = new SolidBrush(textColor);


    drawing.DrawString(text, font, textBrush, 0, 0);


    drawing.Save();


    textBrush.Dispose();

    drawing.Dispose();


    return img;


}

此代码将首先测量字符串,然后创建正确大小的图像。


如果要保存此函数的返回,只需调用返回图像的Save方法。


查看完整回答
反对 回复 2019-10-25
?
DIEA

TA贡献1820条经验 获得超2个赞

谢谢卡扎尔。对以前使用USING处置图像/图形对象以及引入最小尺寸参数后的使用方法的回答略有改进


    private Image DrawTextImage(String currencyCode, Font font, Color textColor, Color backColor) {

        return DrawTextImage(currencyCode, font, textColor, backColor, Size.Empty);

    }

    private Image DrawTextImage(String currencyCode, Font font, Color textColor, Color backColor, Size minSize) {

        //first, create a dummy bitmap just to get a graphics object

        SizeF textSize;

        using (Image img = new Bitmap(1, 1)) {

            using (Graphics drawing = Graphics.FromImage(img)) {

                //measure the string to see how big the image needs to be

                textSize = drawing.MeasureString(currencyCode, font);

                if (!minSize.IsEmpty) {

                    textSize.Width = textSize.Width > minSize.Width ? textSize.Width : minSize.Width;

                    textSize.Height = textSize.Height > minSize.Height ? textSize.Height : minSize.Height;

                }

            }

        }


        //create a new image of the right size

        Image retImg = new Bitmap((int)textSize.Width, (int)textSize.Height);

        using (var drawing = Graphics.FromImage(retImg)) {

            //paint the background

            drawing.Clear(backColor);


            //create a brush for the text

            using (Brush textBrush = new SolidBrush(textColor)) {

                drawing.DrawString(currencyCode, font, textBrush, 0, 0);

                drawing.Save();

            }

        }

        return retImg;

    }


查看完整回答
反对 回复 2019-10-25
  • 3 回答
  • 0 关注
  • 400 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信