答案成了一對夫婦的編輯之後相當長,所以這裏是最後的結果是:
的Graphics
對象的PageUnit
屬性設置爲GraphicsUnit.Pixel
並採取與DPIX和DpiY值乘以座標將呈現在顯示器和打印機設備上的預期結果。
private static void DrawInchLine(Graphics g, Color color, Point start, Point end)
{
GraphicsUnit originalUnit = g.PageUnit;
g.PageUnit = GraphicsUnit.Pixel;
using (Pen pen = new Pen(color, 1))
{
g.DrawLine(pen,
start.X * g.DpiX,
start.Y * g.DpiY,
end.X * g.DpiX,
end.Y * g.DpiY);
}
g.PageUnit = originalUnit;
}
你可以把它畫一個表格(或控制)於:
using (Graphics g = this.CreateGraphics())
{
Point start = new Point(1, 1);
Point end = new Point(2, 1);
DrawInchLine(g, Color.Black, start, end);
}
...或輸出發送到打印機:
PrintDialog dialog = new PrintDialog();
if (dialog.ShowDialog() == DialogResult.OK)
{
PrintDocument pd = new PrintDocument();
pd.PrinterSettings = dialog.PrinterSettings;
pd.PrintPage += (psender, pe) =>
{
Point start = new Point(1, 1);
Point end = new Point(2, 1);
DrawInchLine(pe.Graphics, Color.Black, start, end);
pe.HasMorePages = false;
};
pd.Print();
}
這確實然而, ,依靠設置PageUnit
。
我現在用打印樣本更新了我的答案 – 2009-08-27 13:16:11