Я генерирую квитанцию и использую графический объект, чтобы вызвать метод шнурки для распечатки необходимого текста. < /p>
graphics.DrawString(string, font, brush, widthOfPage / 2F, yPoint, stringformat);
< /code>
Это прекрасно работает для того, что мне нужно было сделать. Я всегда знал, что я печатаю, чтобы вручную обрезать любые струны, чтобы она была должным образом поместиться на 80 -миллиметровой квитанционной бумаге. Затем мне пришлось добавить дополнительную функциональность, которая сделает это более гибким. Пользователь мог бы пройти в строки, которые будут добавлены внизу. Чтобы узнать количество символов, я делал что -то вроде этого: < /p>
float width = document.DefaultPageSettings.PrintableArea.Width;
int max = (int)(width / graphics.MeasureString("a", font).Width);
< /code>
Теперь ширина возвращает мне 283, что в MM составляет около 72, что имеет смысл, когда вы учитываете маржу на бумаге 80 мм. Таким образом, вместо того, чтобы обойти то, что я ожидал, будет 36 - 40, я получаю 26, в результате чего 2 строки текста превращаются в 3-4.
Единицы для PrintableArea.width - 1/100 -й дюйма, а PageUnit для графического объекта - это (что, как правило, 1/100 -го дюйма для пинтеров). Так почему я вернулся только 26?
Подробнее здесь: https://stackoverflow.com/questions/120 ... ted-number
Почему graphics.measurestring () возвращает число выше, чем ожидалось? ⇐ C#
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение