Почему не печатает?
procedure TForm1.Button1Click(Sender: TObject);
begin
if PrintDialog1.Execute then
Printer.BeginDoc;
with Printer.Canvas do
begin
SetMapMode(Handle, MM_HIMETRIC);
{
одна наша единица = 0,01 мм при печати
т.е. 10 ед. = 0,1 мм
}
pen.Width:=10;
moveto(5000,1000);// 5 см вправо, 1 см вниз
lineto(5000,10000); //5 см вправо, 10 см вниз
end;
Printer.EndDoc;
end;;
Если изменить
SetMapMode(Handle, MM_HIMETRIC)
на
SetMapMode(Handle, MM_TEXT) // т.е. 1 наша единица = 1 единице устройства (1 пикселю принтера)
То печатается всё без проблем
procedure TForm1.Button1Click(Sender: TObject);
begin
if PrintDialog1.Execute then
Printer.BeginDoc;
with Printer.Canvas do
begin
SetMapMode(Handle, MM_TEXT);
pen.Width:=1; // примерно 0,1 мм
moveto(600,300); // 5 см и 2,5 см соответственно
lineto(600,1200); //5 см и 10 см соответственно
{
300 пикселей/дюйм - разрешение принтера
1 дюйм = 2,5 см
следовательно 600 наших единиц = 5 см
}
end;
Printer.EndDoc;
end;
Но не хочется привязываться к разрешению принтера. Если будет не 300, а например 200 или 250, то то все мои размеры “полетят”. Нужны тонкие линии заданной длинны на любом принтере.
Извечный русский вопрос: Что делать? Может еще какой параметр надо указать?
procedure TForm1.Button1Click(Sender: TObject);
begin
if PrintDialog1.Execute then
Printer.BeginDoc;
with Printer.Canvas do
begin
SetMapMode(Handle, MM_HIMETRIC);
pen.Width:=10;
moveto(5000, -1000);// 5 см вправо, 1 см вниз
lineto(5000, -10000); //5 см вправо, 10 см вниз
end;
Printer.EndDoc;
end;