C# 等边印刷

C# 等边印刷,c#,.net,visual-studio,c#-4.0,c#-3.0,C#,.net,Visual Studio,C# 4.0,C# 3.0,有办法找到纸的中心坐标吗 我读过很多讨论、论坛和技巧,但我没能做到。 我是这样打印的: using (PrintDialog pd = new PrintDialog()) { if (pd.ShowDialog() != DialogResult.OK) return; PrintDocument document = new PrintDocument(); document.PrinterSettings = pd.Pri

有办法找到纸的中心坐标吗

我读过很多讨论、论坛和技巧,但我没能做到。 我是这样打印的:

     using (PrintDialog pd = new PrintDialog())
     {
        if (pd.ShowDialog() != DialogResult.OK) return;
        PrintDocument document = new PrintDocument();
        document.PrinterSettings = pd.PrinterSettings;
        document.PrintPage += new PrintPageEventHandler(Document_PrintPage);
        document.Print();
    }

    private void Document_PrintPage(object sender, PrintPageEventArgs e)
    {
        int X = (int)e.PageSettings.PrintableArea.X;
        int Y = (int)e.PageSettings.PrintableArea.Y;
        int width = (int)e.PageSettings.PrintableArea.Width - X;
        int height = (int)e.PageSettings.PrintableArea.Height - Y;

        int centerX = (width - X)/2 + X;
        int centerY = (height - Y)/2 + Y;

        e.Graphics.DrawRectangle(Pens.Gray, new Rectangle(X, Y, width, height));
        e.Graphics.DrawLine(Pens.Black, centerX - 100, centerY, centerX + 100, centerY);
        e.Graphics.DrawLine(Pens.Black, centerX, centerY - 100, centerX, centerY + 100);
    }
当然,我尝试了很多方法来计算这些坐标,包括使用边距边界、硬边距、边距等


有人知道如何准确地在纸的中心打印东西吗?

e.PageBounds
是您要查找的内容(PrintPageEventArgs的属性)。它为您提供了表示页面总面积的矩形区域

int centerX = e.PageBounds.Width / 2;
int centerY = e.PageBounds.Height / 2;

e.PageBounds
是您要查找的内容(属于
PrintPageEventArgs
的属性)。它为您提供了表示页面总面积的矩形区域

int centerX = e.PageBounds.Width / 2;
int centerY = e.PageBounds.Height / 2;