Столкнулся с таким непонятным явлением: вывожу картинку на принтер, рисую на Canvas принтера, заполняю всю область, но размер информации, отправляемый на принтер различается от способа рисования. Несколько примеров, иллюстрирующих непонятку:
Вариант 1. Вывожу горизонтальные линии случайным цветом с помощью команд MoveTo и LineTo по линиям.
- Код: Выделить всё
var
W, H : integer ;
begin
with Printer do
begin
BeginDoc;
randomize ;
for H := 1 to PageHeight-1 do
begin
Canvas.Pen.Color := random(High(TColor-1)) ;
Canvas.MoveTo(1, H) ;
Canvas.LineTo(PageWidth-1, H) ;
end;
EndDoc ;
end;
end ;
Вариант 2. Вывожу горизонтальные линии случайным цветом попиксельно через массив Pixels.
- Код: Выделить всё
var
W, H : integer ;
begin
with Printer do
begin
BeginDoc;
randomize ;
for H := 1 to PageHeight-1 do
begin
Canvas.Pen.Color := random(High(TColor-1)) ;
for W := 1 to PageWidth-1 do
Canvas.Pixels[W, H] := Canvas.Pen.Color ;
end;
EndDoc ;
end;
end ;
Вариант 3
Вариант 1. Вывожу горизонтальные линии случайным цветом попиксельно с помощью команд MoveTo и LineTo.
- Код: Выделить всё
var
W, H : integer ;
begin
with Printer do
begin
BeginDoc;
randomize ;
for H := 1 to PageHeight-1 do
begin
Canvas.Pen.Color := random(High(TColor-1)) ;
for W := 1 to PageWidth-1 do
begin
Canvas.MoveTo(W, H) ;
Canvas.LineTo(W, H) ;
end ;
end;
EndDoc ;
end;
end ;
В первом варианте размер данных, отправляемых на принтер, составляет 825 Кб, во втором - 666 Мб, а в третьем - 1,03 Гб. Как так, рисунки-то одинаковые?