| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Звук, графика и видео > Printer.Canvas и заливка кистью |
| Автор: DemoCode 29.5.2006, 14:47 |
| При рисовании на канве принтера, он полностью игнорирует стиль кисти. В частности bsBDiagonal воспринимает как bsSolid. Как можно это исправить? |
| Автор: Snowy 29.5.2006, 14:54 |
| Подготовить документ на битмапе, а потом скопировать на канву принтера. |
| Автор: skyboy 29.5.2006, 15:02 |
| DemoCode, часом там в момент обращения(в смысле - PageHeight и PageWidth) не -1 хранится? |
| Автор: Snowy 29.5.2006, 15:03 |
| Создай битмап удобного для себя размера, а на принтер копируй его через StretchDraw. |
| Автор: DemoCode 29.5.2006, 15:06 | ||||
Вот с этим большие проблемы. Именно это и был первый вариант. Мне надо печатать чертежи. При копировании StretchDraw или StretchDIBits происходит увеличение и всё портится (особенно эллипсы, окружности и т.д.) - появляется некрасивая пикселизация. А при рисовании сразу на канве принтера все ровненько и красиво, но стили кисти не воспринимаются
нет |
| Автор: Snowy 29.5.2006, 15:21 | ||
Например лист A4 разрешение 300dpi будет 2480x3508 пикселей. С таким разрешением портиться ничего не будет. Добавлено @ 15:22 Кстати, а чему у тебя равны PageHeight и PageWidth? |
| Автор: DemoCode 29.5.2006, 15:26 | ||
Зависит от принтера: от 4800 и 6826 до 8600 и 10840
Попробую. |
| Автор: DemoCode 29.5.2006, 16:02 | ||
Всё отлично получилось. Хотя стиль кисти из-за увеличения превращался в bsSolid, но это не страшно, в качестве кисти использовал битмап большого разрешения. Snowy, и что бы я без тебя делал? Спасибо. PS: Так и осталось непонятно почему канва принтера не воспринимает стили кисти и даже если её битмапом задать. |
| Автор: Mechanic 29.5.2006, 20:25 |
| А может быть потому, что принтер шибко умный попался. То есть, он на входе имеет PostScript данные, которые рендерит своими силами. Но силенки не шибко рассчитывает. Обычно таких шибко вумных прикручивают с помощью настройки на EMF (или как там они сейчас называются), на чисто растровые данные. Пущай, как старый, тупой, но добрый матричник, точка за точкой, рисует то, что ему велено, но не то, как он это понимает.. |
| Автор: Snowy 30.5.2006, 08:46 |
| Скорее дело в слишком мелкой точке, что делает неразличимым пробел в один пихель. Битмап не масштабирован, поэтому тоже мелкий. Поэтому картинку лучше именно подготовить, чтобы она одинаково выглядела на всех принтерах, а не так, что на одном сетка крупнее, на другом мельче, на третем вообще неразличима. |