![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() При печати изображения на термопринтере (чековом) изображение искажается.
Написал тестовый код: Код:
var B:TBitmap; Procedure Test(C:TCanvas;X:Integer); var n,f,Y:Integer; begin Y:=0; for n:=1 to 10 do begin for f:=1 to n do begin C.MoveTo(X,Y); C.LineTo(100+X,Y); Inc(Y); end; Y:=Y+10; end; end; begin B:=TBitmap.Create; B.Width:=101; B.Height:=201; Test(B.Canvas,0); Printer.BeginDoc; Printer.Canvas.Draw(0,0,B); Test(Printer.Canvas,105); Printer.EndDoc; B.Free; end; При печати на лазерном принтере правая и левая часть выглядят одинаково. На термопринтере напечатанное изображение выглядит более бледно. Пробовал разные варианты: StretchDraw, StretchDIBits, PixelFormat и прочее, результат не меняется. Рядом на фото круги B.Canvas.Ellipse(0,0,100,100); и Printer.Canvas.Ellipse(20,20,80,80); Хорошо видно разницу в толщине линий, хотя они должны быть одинаковыми. Складывается впечатление, что при построении изображения прямо на канвасе принтера, драйвер принтера использует другие алгоритмы отрисовки. https://delphisources.ru/forum/attachment.php?attachmentid=5502&stc=1&d=174103741 8 Последний раз редактировалось Admin, 04.03.2025 в 09:33. |