幅 80 文字、高さ 66 文字のモノスペース フォントを使用してテキストを印刷したいと考えています。目標は、生のテキストをインパクト プリンターに送信することを模倣することです。
ここにいくつかのコードがあります:
public void Print(string printerName, string text, string desc = "")
{
PrintDialog dialog = new PrintDialog();
PrintQueue queue = new LocalPrintServer().GetPrintQueue(printerName);
dialog.PrintQueue = queue;
PageImageableArea area = queue.GetPrintCapabilities(dialog.PrintTicket).PageImageableArea;
TextBlock block = new TextBlock();
block.FontFamily = new FontFamily("Courier New");
block.Margin = new Thickness(area.OriginWidth, area.OriginHeight, area.OriginWidth, area.OriginHeight);
block.FontSize = ???
block.Text = text;
block.Measure(new Size(area.ExtentWidth, area.ExtentHeight));
block.Arrange(new Rect(new Point(0, 0), block.DesiredSize));
dialog.PrintVisual(block, desc);
}
PageImageableArea が私area.ExtentWidth
に与えarea.ExtentHeight
、実際の印刷寸法 (ピクセル単位) とarea.OriginWidth
余白area.OriginHeight
のサイズ (ピクセル単位) を理解しています。
ページ全体に正確に 80 文字を収めたい場合は、各文字のarea.ExtentWidth / 80
幅をピクセル単位で指定する必要があります。私のarea.ExtentWidth
プリンターは 768 なので、各文字の幅は 9.6 ピクセルです。
さらに、ページに正確に 66 行を収めたい場合は、各行のarea.ExtentHeight / 66
高さをピクセル単位で指定する必要があります。私のarea.ExtentHeight
プリンターの は 1038.66 なので、各行は 15.7 ピクセルの高さにする必要があります。
これらの入力を使用して、各文字の幅が X ピクセルで、折り返すと各行の高さが Y ピクセルになる FontSize を選択するにはどうすればよいですか?