RUS  ENG 

Проблемы с печатью.

Страницы: 1
RSS
Проблемы с печатью.
 
Я конечно все понимаю, но зачем УДАЛЯТЬ мои вопросы??? Не можите решить проблему с печатью так и скажите!!!
Почему при печати возникают такие проблемы: http://img.xet.ru/images/6/6/2/0/0/66200MAP.jpg
 
Приносим извинения, если Ваше сообщение было по ошибке было удалено. Нам постоянно приходится чистить форумы от спама, и Ваше сообщение значит тоже случайно удалили.
Не могли бы Вы повторить, в чем конкретно проблема с печатью и на что именно нужно обратить внимание на указанной картинке ?
 
Пишу компонент на C# заполняю PrintInfo:

// Печать по установленной области
Int32 option = (Int32)ePrintInfoConstants.ePrintExplicitRect;
// Печать по установленному маштабу
option |= (Int32)ePrintInfoConstants.ePrintExplicitScale;
// Не показывать диалог печати
option |= (Int32)ePrintInfoConstants.ePrintNoPrintDlg;
pi.Options = option;

// Размер бумаги
pi.PaperSize = (int)m_PrinterSetings.PrinterSettings.DefaultPageSettings.PaperSize.Kind;
// Вертикально или горизонтально
if (m_PrinterSetings.Landscape)
pi.Orientation = (int)ePrintInfoConstants.ePrintOrientLandscape;
else
pi.Orientation = (int)ePrintInfoConstants.ePrintOrientPortrait;

// Установить имя принтера
pi.Device = m_PrinterSetings.PrinterSettings.PrinterName;
// Установить область
pi.SetAreaRect(rect.RB.Y / 10, rect.LT.X / 10, rect.LT.Y / 10, rect.RB.X / 10);

// Установить маштаб
pi.Scale = Scale;

// Установить расположение печатаемой области на листе
pi.Align = (Int32)eLabelPosition.eCenter;

pi.VertPages = 1;
pi.HorzPages = 1;

// Задаем слой по габаритам которого определяется печатаемый фрагмент карты.
pi.Layer = -1;

Размер области деленый на Маштаб равен печатной зоне на листе (в FrameWork 2.0 это PrintArea). При выводе на печать образуется область (на картинке видно), что вокруг области полигоны обрезаются, а буквы продолжают идти. Хотя по идеи полигоны должны обрезаться где обрезаются буквы. Пытался уменьшить область печати, думал что при печати вы сами добавляете поля, но это не к чему не привело =(
 
А точно "pi.SetAreaRect(rect.RB.Y / 10, rect.LT.X / 10, rect.LT.Y / 10, rect.RB.X / 10);" ?
Не получилось ли так, что в указанной области начальные координаты X1,Y1 оказались больше X2,Y2 ?
В этом может быть дело. При выводе Zulu для отсечки полигонов добавляет запас наружу указанного прямоугольника, а так, если область оказалась с отрицательной шириной или высотой, отступ оказался внутрь.
 
Проверил. Все правильно указывается.
Просто у меня в программе считает в мм (в Zulu см) и переворачивает координаты (x и y). Мне так удобней. А потом подгоняет к Zulu.
Растр мне дает правильно, только при печати такие поля выдает =(. Еслибы эти поля накладывались на соседних листах, а то они не накладываются и получаются пробелы на склейки листов.

Получилось убрать эту область, с вычитанием из области печати 5 мм. Но это не выход. Поля в 2.5 мм все портят, если печатать на принтере у которого нет не печатных полей...
 
Не могли бы Вы прислать пример готового кода и какого-то кусочка тестовых данных, на которых проявляется данный эффект. Мы тогда проверим под отладчиком (мы можем проверить под MSVS2003).
Пока, подозрения только на подставляемый прямоугольник в SetAreaRect, т.к. при задании фрагмента печати в оболочке на предварительном просмотре и печати подобный эффект при отсечки полигонов у нас не проявляется.
 
Отправил на емайл.
 
Скачайте обновление. Должно нормально печатать.
 
Хорошо, спасибо!
Оп-с, не туда написал, но все равно спасибо :)
Изменено: Vic - 28.01.2019 13:02:07
Страницы: 1