C ++, win32, gdi Печать: DrawEdge не доходит до DrawText? - PullRequest
0 голосов
/ 26 января 2009

Я пытаюсь напечатать (используя принтер, на бумаге, а не на экране) строки и текст, используя функции DrawEdge и DrawText (http://msdn.microsoft.com/en-us/library/ms534882.aspx и http://msdn.microsoft.com/en-us/library/ms533909.aspx). Они работают довольно хорошо однако, когда я пытаюсь добраться до нижней части своей бумаги (примерно в 35 миллиметрах от нее), линия просто перестает рисоваться. Я думал, что это был предел моего принтера. Однако, когда я рисую текст, у моего принтера нет проблем печать там и даже ниже. Есть ли способ для DrawEdge рисовать линии там? Есть ли другой способ сделать это? Это ошибка?

1 Ответ

1 голос
/ 29 сентября 2009

Я могу придумать несколько причин:

  • У вас установлена ​​область отсечения, когда вы рисуете край, который устанавливается по-другому, когда вы рисуете текст.

  • Область обрезки задана, но принтер не всегда обрезает текст. Некоторые принтеры будут печатать весь символ, даже если только его часть находится внутри области отсечения. Вы можете проверить его возможности обрезки текста, используя GetDeviceCaps с TEXTCAPS. В этом случае может отображаться печать текста в нижней части области отсечения, но другие типы графики (например, линии) будут отсечены.

  • Вы ошибаетесь в отношении области печати страницы. Какой тип принтера это? Многие принтеры не могут печатать в пределах 35 мм от нижнего края. Что драйвер сообщает как область для печати? (Используйте GetDeviceCaps с PHYSICALOFFSETY и PHYSICALHEIGHT, чтобы определить, насколько низко вы можете распечатать страницу.)

Удачи!

...