我想使用等寬字體打印文字,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像素高。
使用這些輸入,我該如何選擇一個FontSize,其中每個字符的寬度都是X像素,並且在包裝時會導致每一行的像素高度爲Y像素?