0

我正在使用斑马证卡打印机。我正在与一个小组合作设计一个程序,该程序允许用户将所需信息输入到不同的框中并相应地打印出来,但是表单中有一个位置允许管理用户修改将出现的各种免责声明卡的背面。用户可以将信息输入到富文本框中,它会存储在数据库中并在需要时进行维护,直到更改为止。目标是使文本打印在不同的行上,因为我不确定打印机是否了解如何更改行并且会耗尽卡片的长度(这是标准信用卡尺寸)或者只是继续在最后一行的上面打印每一行。我对编程很陌生,我的小组 m with 正在使用 Visual Studio 和 C# 编码——我几乎没有这方面的经验,而且我对这台打印机知之甚少。问题是,用户可以输入一个长字符串(在 consolas 大小 12 字体中限制为 500 个字符),我需要一种方法,以便当达到某个限制时,字符串会下降以在下一个打印行而不将任何单词切成两半。我想我需要使用 lastIndexOf 以某种方式在每行的字符限制之前找到单词之间的最后一个空格。目前,这是目前的情况:是会有一个用户可以输入的长字符串(在 consolas 12 号字体中限制为 500 个字符),我需要一种方法,以便当达到某个限制时,字符串会下降到下一行打印而不会被砍一半的话。我想我需要使用 lastIndexOf 以某种方式在每行的字符限制之前找到单词之间的最后一个空格。目前,这是目前的情况:是会有一个用户可以输入的长字符串(在 consolas 12 号字体中限制为 500 个字符),我需要一种方法,以便当达到某个限制时,字符串会下降到下一行打印而不会被砍一半的话。我想我需要使用 lastIndexOf 以某种方式在每行的字符限制之前找到单词之间的最后一个空格。目前,这是目前的情况:

            foreach (string disclaimer in disclaimerSplit)
            {
                if (graphics.DrawText(x, 35, ascii.GetBytes(disclaimer), ascii.GetBytes("Consolas"), 12, fontStyle, 0x009973, out error) == 0)
                {
                    msg = "DrawText method error code: " + error.ToString();
                    return;
                }

            }

disclaimerSplit 是一个字符串数组,将用于保存每个字符串,因为整个内容被分解为适合每一行的较小字符串。我不确定这是否使这个过程过于复杂或什么,但我不知道该去哪里。例如,使用本段。如果要打印在卡片上,它需要看起来像这样。它适合一个包含的空间,每次达到字符限制时都会下降,并且不会在行之间将单词切成两半。我还使用了 consolas 字体,因为它是等宽字体,希望可以更容易地确定每行可以容纳多少个字符,而不会超出卡片的边缘。我已经看到了一些关于此的堆栈主题,但它们不是我想要的,或者没有完全有意义。

4

0 回答 0