gpt4 book ai didi

C# 向图像添加字符串,使用最大字体大小

转载 作者:行者123 更新时间:2023-11-30 21:08:17 26 4
gpt4 key购买 nike

我想在图像中添加 2 个字符串,如下所示:

This is Text
------------
------------
------------
--Other-----

如何在不让字符串超出图像的一侧的情况下使用尽可能大的字体大小?

示例:如果文本太大,则它会脱离图像::

This is Text That is too big
------------
------------
------------
--Other-----

最佳答案

我在以前的项目中编写了这个脚本,通过计算每种字体大小的尺寸,使一些文本适合图像。当字体大小大于图像的宽度时,它将字体大小减小 0.1em 并再次尝试,直到文本适合图像。这是代码:

public static string drawTextOnMarker(string markerfile, string text, string newfilename,Color textColor)
{
//Uri uri = new Uri(markerfile, UriKind.Relative);
//markerfile = uri.AbsolutePath;
//uri = new Uri(newfilename, UriKind.Relative);
//newfilename = uri.AbsolutePath;
if (!System.IO.File.Exists(System.Web.HttpContext.Current.Server.MapPath(newfilename)))
{
try
{

Bitmap bmp = new Bitmap(System.Web.HttpContext.Current.Server.MapPath(markerfile));
Graphics g = Graphics.FromImage(bmp);
g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAliasGridFit;
StringFormat strFormat = new StringFormat();
strFormat.Alignment = StringAlignment.Center;
SolidBrush myBrush = new SolidBrush(textColor);
float fontsize = 10;
bool sizeSetupCompleted = false;
while (!sizeSetupCompleted)
{
SizeF mySize = g.MeasureString(text, new Font("Verdana", fontsize, FontStyle.Bold));
if (mySize.Width > 24 || mySize.Height > 13)
{
fontsize-= float.Parse("0.1");
}
else
{
sizeSetupCompleted = true;
}
}

g.DrawString(text, new Font("Verdana", fontsize, FontStyle.Bold), myBrush, new RectangleF(4, 3, 24, 8), strFormat);
bmp.Save(System.Web.HttpContext.Current.Server.MapPath(newfilename));
return newfilename.Substring(2);
}
catch (Exception)
{
return markerfile.Substring(2);
}
}
return newfilename.Substring(2);
}

关于C# 向图像添加字符串,使用最大字体大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9747559/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com