13 / 13 / 7
Регистрация: 24.04.2015
Сообщений: 51
|
|
1 | |
.NET 4.x Вывод на печать разряженой строки15.01.2016, 14:59. Показов 1705. Ответов 2
Метки нет (Все метки)
Есть Graphics.DrawString(...) - кладет на страницу какой-то текст с какими-то параметрами.
Разрядить строку (Увеличить межсимвольное расстояние) прямыми способами нельзя. Есть функция SetTextCharacterExtra(a,b) a - в моем случае дескриптор b - межсимвольное расстояние. SetTextCharacterExtra не работает с DrawString. SetTextCharacterExtra работает если выводить на печать с помощью TextRenderer.DrawText. Но TextRenderer.DrawText не понять как работает с координатами (размер холста получается 4-6 раз больше чем при использовании DrawString) и соответственно печатается не так как нужно. Сталкивался кто-нибудь с подобным? Что я не так делаю, как заставить работать DrawString и SetTextCharacterExtra, или как преобразовать координаты для DrawText.
0
|
15.01.2016, 14:59 | |
Ответы с готовыми решениями:
2
Вывод на печать строки по нажатию кнопки возле этой строки Вывод на печать одной строки из DBGrid Вывод на печать выделеной строки таблицы Вывод на печать выделенной строки из DBGrid |
15.01.2016, 15:43 | 2 |
Сообщение было отмечено Yurui как решение
Решение
Yurui, Все дело в том, что и TextRenderer.DrawText и SetTextCharacterExtra - это методы GDI. А Graphics.DrawString - это GDI+. А это совершенно разные машины рендеринга, поэтому их смешивать затруднительно.
Когда у меня стояла подобная задача (регулирование межсимвольного интервала), я просто рендерил каждый символ отдельно (через Graphics.DrawString). В таком случае поставить интервал между символами проблемы не представляет. Падения быстродействия бояться особо не стоит, все работает достаточно быстро.
1
|
13 / 13 / 7
Регистрация: 24.04.2015
Сообщений: 51
|
|
15.01.2016, 16:08 [ТС] | 3 |
Спасибо за ответ, сейчас так и поступлю
Добавлено через 19 минут Да, действительно простое и красивое решение, в общем виде получилось так: рисуем первый символ в начальную координату X, затем к этой координате прибавляем длину нарисованного символа (функция MeasureString) и к полученной сумме прибавляем нужное нам межсимвольное расстояние. И все это в цикле длинной выводимой на печать строки. Работает, проблем с быстродействием не наблюдается.
0
|
15.01.2016, 16:08 | |
15.01.2016, 16:08 | |
Помогаю со студенческими работами здесь
3
Вывод на печать каждой строки табличной части на отдельном листе Вывод на печать DBGrid из TabSheet на печать в файл ворда Массив 5х5. Вывод на печать номер строки и столбца и адреса , где они хранятся, для элементов, значения которых равны X... Строки. Вывести на печать то слово этой строки, которое по алфавиту предшествует всем другим Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |