안녕하세요. 주삼식입니다.
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;
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;