在我的应用程序中,我生成了一个Bitmap
带有可变字符串的。
这是我的功能:
public void Image(String text, String font, int size)
{
Font font = new Font(font, size);
float res = ((font.SizeInPoints * text.Length) / 72) * 96;
using (Bitmap img = new Bitmap((int)res, font.Height))
{
Graphics g = Graphics.FromImage(img);
SolidBrush drawBrush = new SolidBrush(Color.Black);
g.DrawString(text, font, drawBrush, 1, 0);
String directory = AppDomain.CurrentDomain.BaseDirectory + "Content\\Images\\Signature\\";
string outputFileName = directory + "sign.png";
img.Save(outputFileName, ImageFormat.Png);
}
}
我希望图像的宽度与该位图中打印的字符串的宽度完全匹配。
如您所见,我尝试使用字体的磅值来计算宽度。
问题是每个打印的字母都有不同的宽度,因此在创建之前我无法得到尺寸Bitmap
。
另外,我什至不知道如何获取打印字符串的实际大小...
有人有主意吗?
使用该Graphics.MeasureString
功能。它采用字符串和字体,并以形式返回渲染文本的大小SizeF
。还有其他一些重载可以使用格式信息,而另一个重载可以SizeF
表示包装的最大宽度。
可以在这里找到详细信息:https : //msdn.microsoft.com/zh-cn/library/6xe5hazb(v=vs.110).aspx
// Set up string.
string measureString = "Measure String";
Font stringFont = new Font("Arial", 16);
// Set maximum layout size.
SizeF layoutSize = new SizeF(100.0F, 200.0F);
// Set string format.
StringFormat newStringFormat = new StringFormat();
newStringFormat.FormatFlags = StringFormatFlags.DirectionVertical;
// Measure string.
SizeF stringSize = new SizeF();
stringSize = e.Graphics.MeasureString(measureString, stringFont, layoutSize, newStringFormat);
// Draw rectangle representing size of string.
e.Graphics.DrawRectangle(new Pen(Color.Red, 1), 0.0F, 0.0F, stringSize.Width, stringSize.Height);
// Draw string to screen.
e.Graphics.DrawString(measureString, stringFont, Brushes.Black, new PointF(0,
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句