Q&A

  • 프린터할때 printer.canvas.textout 에 대해서...
다름이 아니라 textout(x,y,String)에서
x,y값이 용지에 찍히는 값인데, 미리미터로 생각하면 되는지.....

허접한 질문에 답변 달아주시면 감사하겠습니다.
2  COMMENTS
  • Profile
    KDDG_Drop 2003.04.08 02:57
    안녕하세요. 주삼식입니다.
    x,y는 pixel좌표입니다.
    프린트마다 전제 PrintWidth, PrintHeight가 다릅니다. 즉 해상도에 따라 다르죠. 레이져는 600dpi는 보통 4800, 6848정도이구요. 잉크는 300dpi는 2400, 3424정도라고 보시면 됩니다. 현재프린터의 해상도 및 DC의 여러정보를 알아오는 함수가 GetDeviceCaps입니다.
    그러므로, 프린터 해상도와 전체 폭,넓이를 계산해서 그려줘야 합니다.
    참고적으로 될수있으면 QuickReport를 사용하시고 안된다면 코딩으로 하시는 것이 좋습니다.
    감사합니다.

    사용예제는 다음과 같습니다.

    unit Printers;

    procedure TPrinterCanvas.UpdateFont;
    var
      FontSize: Integer;
    begin
      if GetDeviceCaps(Printer.DC, LOGPIXELSY) <> Font.PixelsPerInch then
      begin
        FontSize := Font.Size;
        Font.PixelsPerInch := GetDeviceCaps(Printer.DC, LOGPIXELSY);
        Font.Size := FontSize;
      end;
    end;

  • Profile
    노계섭 2003.04.08 18:45