使用左右抽取字符串对齐文本

本文关键字:字符串 对齐 文本 左右 | 更新日期: 2023-09-27 18:36:19

假设我有 200 像素的空间,我想在其中绘制两个字符串: - 第一个字符串应左对齐 - 右第二个字符串应右对齐 - 但如果它们不适合,则不要重叠(然后按照我的字符串.修剪选项说什么)

我是否必须测量每个并手动绘制,或者 DrawString 是否有某种方法可以在不重新发明轮子的情况下支持我正在尝试做的事情?

想象一下 ''l 和 ''r 是这样做的转义,那么我可以说

graphics.Drawstring("'lfirst'rsecond", ...);

我最终会得到类似的东西

"first              second"

至少这就是我希望发生的事情(我知道 ''l 和 ''r 不存在)。 有办法吗?

使用左右抽取字符串对齐文本

我忽略了您的标志,而是(大致)向您展示如何对齐文本。 挑选文本、拆分并绘制为两个单独的字符串非常简单!

string text2 = "Use TextFormatFlags and Rectangle objects to"
 + " align text in a rectangle.";
using (Font font2 = new Font("Arial", 12, FontStyle.Bold, GraphicsUnit.Point))
{
    Rectangle rect2 = new Rectangle(150, 10, 130, 140);
    // Create a TextFormatFlags with word wrapping, horizontal center and
    // vertical center specified.
    TextFormatFlags flags = TextFormatFlags.HorizontalLeft |
        TextFormatFlags.VerticalCenter | TextFormatFlags.WordBreak;
    // Draw the text and the surrounding rectangle.
    TextRenderer.DrawText(e.Graphics, text2, font2, rect2, Color.Blue, flags);
    e.Graphics.DrawRectangle(Pens.Black, rect2);
}
从长远来看,

这是我最终要做的事情:

  1. 在左侧字符串上调用度量字符串
  2. 在右侧字符串上调用度量字符串
  3. 绘制左对齐
  4. 字符串,左对齐
  5. 如果两个字符串的宽度
  6. 之和小于可用空间的宽度,请右对齐绘制右对齐的字符串。

非常简单,尽管我希望框架中有一些东西可以为我完成工作。