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

任何人都可以指导如何从输入文本生成图像。图片可能有任何扩展名都没关系。



慕田峪9158850
浏览 401回答 3
3回答

慕勒3428872

好的,假设您想在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方法。

DIEA

谢谢卡扎尔。对以前使用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;    }
打开App,查看更多内容
随时随地看视频慕课网APP