c# - MeasureString 和 DrawString 的区别

标签 c# .net string graphics

为什么我必须将 MeasureString() 结果宽度增加 21% size.Width = size.Width * 1.21f;DrawString() 中避免自动换行?

我需要一个解决方案来获得准确的结果。

两个函数中使用相同的字体、相同的字符串格式、相同的文本。


来自 OP 的回答:

  SizeF size = graphics.MeasureString(element.Currency, Currencyfont, new PointF(0, 0), strFormatLeft);
  size.Width = size.Width * 1.21f;
  int freespace = rect.Width - (int)size.Width;
  if (freespace < ImageSize) { if (freespace > 0) ImageSize = freespace; else ImageSize = 0; }
  int FlagY = y + (CurrencySize - ImageSize) / 2;
  int FlagX = (freespace - ImageSize) / 2;
  graphics.DrawImage(GetResourseImage(@"Flags." + element.Flag.ToUpper() + ".png"), 
         new Rectangle(FlagX, FlagY, ImageSize, ImageSize));
  graphics.DrawString(element.Currency, Currencyfont, Brushes.Black, 
       new Rectangle(FlagX + ImageSize, rect.Y, (int)(size.Width), CurrencySize), strFormatLeft);

我的代码。

最佳答案

MeasureString() 方法存在一些问题,尤其是在绘制非 ASCII 字符时。请改用 TextRenderer.MeasureText()。

关于c# - MeasureString 和 DrawString 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3811916/

相关文章:

java - 查找两个字符串之间的匹配字符

c# - 如何将波浪号的相对路径呈现为 ../../jquery/javascript 中的相对路径?

C# - Try/Catch 谓词表达式

c# - .NET 中的 MD5 生成有多贵?

c# - 如何通过在构造函数中统一传递参数来解决依赖关系?

MySQL 搜索字符串首先以 string 开头,但也会返回包含 string 的任何结果

C 语言 printf 和 fprintf 在打印包含重音法语字符的字符串时搞砸了

c# - OmniSharp 智能感知无法识别新的类文件

c# - 继承接口(interface)方法的重新实现

.net - 是否可以像 Outlook RTF/TNEF 那样在 html 电子邮件中嵌入非图像附件?