Корректная печать содержимого экрана в Borland C++ Builder (22.12.2014). |
2014 - Декабрь | |||
22.12.2014 20:22 | |||
Столкнулся с частой проблемой языка Borland C++ Builder v.6.0, выражаемую в мелкой печати каких-либо графических объектов. Например, распечатка GroupBox делается обычным методом PaintTo; однако изображение на листе получается в 10-20 раз меньше, чем на экране. Связано это с особенностью взаимосвязи разрешения принтера с разрешением экрана. Разрешение экрана статично и равно 96dpi, в то время как разрешение принтера может меняться. Builder старый язык, шло время - разрешения принтеров становились все больше и больше, а напечатанные изображения - все меньше и меньше. В интернете решение данной проблемы присутствует всего в одном экземпляре, потому что остальные программисты просто забивали и сдавались. Но и единственный экземпляр решения не такой понятный и приличный по объему (так и не смог заставить его работать). Мне повезло: удалось написать код, корректно растягивающий графические объекты на весь лист формата A4. При этом теряется качество, однако преобразование разрешения исходного объекта - это уже другая задача. Традиционно выкладываю код в полезных исходниках для программистов. TRect r(0, 0, Prntr->PageWidth - 20, Prntr->PageHeight - 20); //Область печати, в которую будет помещен объект, с учетом полей печати принтера. |