Delphi - база знаний


Как вместо печати графики использовать резидентный шрифт принтера?


Как вместо печати графики использовать резидентный шрифт принтера?




Используте функцию Windows API - GetStockObject() чтобы получить дескриптор (handle) шрифта по умолчанию устройства (DEVICE_DEFAULT_FONT) и передайте его Printer.Font.Handle.

uses Printers;

procedure TForm1.Button1Click(Sender: TObject);
var
  tm: TTextMetric;
  i: integer;
begin
  if PrintDialog1.Execute then
    begin
      Printer.BeginDoc;
      Printer.Canvas.Font.Handle := GetStockObject(DEVICE_DEFAULT_FONT);
      GetTextMetrics(Printer.Canvas.Handle, tm);
      for i := 1 to 10 do
        begin
          Printer.Canvas.TextOut(100, i * tm.tmHeight +
            tm.tmExternalLeading, 'Test');
        end;
      Printer.EndDoc;
    end;
end;



Начало  Назад  Вперед