Частичный вывод полилинии GDI при печати - PullRequest
2 голосов
/ 01 апреля 2010

При вызове Win32 GDI Polyline () при распечатке я вижу странную проблему. На экране все выглядит нормально, однако при печати он останавливает ломаную линию, когда встречает большое значение. Я думаю, что эта несоответствие связано с масштабированием для печати, дающим большие значения POINT.

Похоже, что полилиния прекращает рисовать, если достигает значения> 32767, т. Е. Как будто существует 16-битное ограничение на значения POINT.

Я видел в сети некоторые слухи о 16-битных значениях, но никаких конкретных рассуждений нет. Я хотел бы выяснить, почему это происходит, прежде чем думать о потенциальном решении.

Ответы [ 2 ]

1 голос
/ 01 апреля 2010

Да, старое 16-битное максимальное значение для Windows 3.x по координатам все еще присутствует в разбросанных неочевидных местах. В этом случае очень вероятно, что это ваш драйвер принтера. Если обновление драйвера не исправляет это, вы не можете ничего сделать, кроме как сами масштабировать полилинию.

1 голос
/ 01 апреля 2010

Согласно документации MS, это происходит в Windows 9X, где координаты 32-битные, но базовая реализация 16-битная, а значения просто усечены. На практике у меня уже была такая же проблема много лет назад в версиях Windows, отличных от 9X, но я думаю, что ситуация немного отличалась от вашей. Мои «большие» координаты отсутствовали, потому что разрешение постоянного тока было высоким, а потому, что у меня были линии с одним концом внутри экрана, а другим далеко за пределами - и поведение было таково, что видимая часть не пересекает край экрана на правильная точка. В моем случае я решил проблему, обрезав линии перед рисованием. Может быть, ваша проблема - ошибка в конкретном драйвере принтера, который вы используете, вы пытались использовать другой?

http://books.google.com/books?id=-O92IIF1Bj4C&lpg=PA359&ots=Sw0FC-9lk7&dq=gdi%2016%20bit%20coordinates&pg=PA359#v=onepage&q=gdi%2016%20bit%20coordinates&f=false

...