Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.05.02;
Скачать: CL | DM;

Вниз

ExtCreatePen ???   Найти похожие ветки 

 
Alex Shulg ©   (2004-01-19 15:10) [0]

Добрый день.
Проблема в следующем: При выводе изображения на экран (используя свои собственные стили линий), все нормально, но при выводе на принтер - сплошная линия. В обоих случаях параметры ExtCreatePen одинаковые.
ExtCreatePen(PS_USERSTYLE | PS_GEOMETRIC, ...->Canvas->Pen->Width, &brush, LStmp->Count, lpStyle), где "..." - принтер или PaintBox.
На принтере получается линия моего стиля, только если убрать PS_GEOMETRIC и толщина линии = 1.
Где грабли?


 
MBo ©   (2004-01-19 15:28) [1]

возможно, драйвер принтера не поддерживает
попробуй GetDeviceCaps с, вероятно, LC_STYLED или LC_WIDESTYLED
Кстати, если не User, а стандартный стиль (DOT, например) - тоже не хочет


 
Alex Shulg ©   (2004-01-19 16:32) [2]

>MBo
Судя по всему поддерживает все возможное...
GetDeviceCaps(Prn->Handle,LINECAPS) возвращает $FE
Таблица из windows.pas:
 LC_NONE       = 0;     { Lines not supported               }
 LC_POLYLINE   = 2;     { Can do polylines                  }
 LC_MARKER     = 4;     { Can do markers                    }
 LC_POLYMARKER = 8;     { Can do polymarkers                }
 LC_WIDE       = $10;   { Can do wide lines                 }
 LC_STYLED     = $20;   { Can do styled lines               }
 LC_WIDESTYLED = $40;   { Can do wide styled lines          }
 LC_INTERIORS  = $80;   { Can do interiors                  }


 
MBo ©   (2004-01-20 13:37) [3]

Тогда, наверно, придется на битмап соответствующих размеров рисовать, потом его копировать...


 
Alex Shulg ©   (2004-01-20 16:49) [4]

Но это же бред какой-то получается... Нафига тогда все эти функции в API? Либо я где-то "галку не поставил", либо Билли - явный ботаник... (и вся его команда туда же...)


 
MBo ©   (2004-01-20 16:56) [5]

принтера нет, поиграть с этим не могу..
А в архивах ньюсгрупп (www.tamaracka.com) навскидку такой проблемы не нашел.

А все же - как со стандартными стилями?


 
Alex Shulg ©   (2004-01-21 11:31) [6]

А со стандартными работает, но только с толщиной пера = 1, но это вроде как нормально(MSDN: Если значение, указанное nWidth большее чем 1, fnPenStyle параметр должен быть PS_NULL, PS_SOLID, или PS_INSIDEFRAME. )
hpen = CreatePen(PS_DOT, 1, Prn->Canvas->Pen->Color);


 
Alex Shulg ©   (2004-01-21 11:35) [7]

А вот ExtCreatePen работает со стандартными и с толщиной пера >1:
hpen = ExtCreatePen(PS_GEOMETRIC | PS_DOT, Prn->Canvas->Pen->Width, &brush,0,0);
Тогда не понятно, что он хочет от USERSTYLE...


 
Alex Shulg ©   (2004-02-04 16:54) [8]

Все... вернушвись вновь к этой проблеме, разобрался до конца! Смешно, но дело было в расчете длины штрихов и пробелов в lpStyle. Некорректно расчитывал, получались слишком маленькие значения, отсюда и сплошная линия... :)


 
MBo ©   (2004-02-04 17:13) [9]

Т.е. пробелы были в несколько пикселов принтера, и слишком малы в миллиметрах?



Страницы: 1 вся ветка

Текущий архив: 2004.05.02;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.03 c
1-1081763789
Hyboid
2004-04-12 13:56
2004.05.02
Привязка сообщений


14-1081658051
Vaitek
2004-04-11 08:34
2004.05.02
Мелкософт блин совсем жадный стал.


1-1082207532
maxz
2004-04-17 17:12
2004.05.02
Как сделать, чтобы программа занимала меньше места в оперативке?


1-1081945120
siriusP
2004-04-14 16:18
2004.05.02
Почему сбрасываются свойства в компоненте?


11-1064221574
RA
2003-09-22 13:06
2004.05.02
BitBtn картинка