При печати изображения на термопринтере (чековом) изображение искажается.
Написал тестовый код:
Код:
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