打印自定义尺寸C#

时间:2012-12-13 21:24:07

标签: c#

我正在尝试使用卡片打印机在特殊尺寸的卡片上打印。 我编写的代码在我的笔记本电脑上工作得很好,然后当我使用不同的屏幕分辨率时,我分析它还取决于屏幕尺寸。

所以请帮助我在代码中进行哪些修改以根据屏幕分辨率调整大小。

    Panel pannel = null;

    Bitmap MemoryImage;

    public void GetPrintArea(Panel pnl)
    {

        Graphics g = this.CreateGraphics();
        MemoryImage = new Bitmap(Convert.ToInt32(3.375 * g.DpiX), Convert.ToInt32(2.125 * g.DpiY));
        //Rectangle rect = new Rectangle(0, 0, Convert.ToInt32(3.375 * g.DpiX), Convert.ToInt32(2.125 * g.DpiY));
        pnl.DrawToBitmap(MemoryImage, new Rectangle(0, 0, Convert.ToInt32(3.375 * g.DpiX), Convert.ToInt32(2.125 * g.DpiY)));
        MemoryImage.Save("pic.jpg");
    }
    public void Print(Panel pnl)
    {
        pannel = pnl;

        GetPrintArea(pnl);
        Graphics g = this.CreateGraphics();
        printdoc1.DefaultPageSettings.PaperSize = new System.Drawing.Printing.PaperSize("Custom Size", Convert.ToInt32(3.375 * g.DpiX), Convert.ToInt32(2.125 * g.DpiY));


        PageSetupDialog setupDlg = new PageSetupDialog();
        setupDlg.Document = printdoc1;
        setupDlg.AllowOrientation = true;
        setupDlg.AllowPaper = true;
        setupDlg.AllowPrinter = true;
        if (setupDlg.ShowDialog() == DialogResult.OK)
        {
            printdoc1.DefaultPageSettings =
            setupDlg.PageSettings;
            printdoc1.PrinterSettings =
            setupDlg.PrinterSettings;
        }
        previewdlg.Document = printdoc1;
        //previewdlg.ShowDialog();
        DialogResult result = previewdlg.ShowDialog();
        if (result == DialogResult.OK)
        {
            printdoc1.Print();
        }
    }

    private void printdoc1_PrintPage(object sender, PrintPageEventArgs e)
    {

        Graphics g = this.CreateGraphics();
        Rectangle pagearea = new Rectangle(0, 0, Convert.ToInt32(3.375 * g.DpiX), Convert.ToInt32(2.125 * g.DpiY));
        //pagearea.Width = 245;
        // e.Graphics.PageUnit = GraphicsUnit.Millimeter;
        e.Graphics.DrawImage(MemoryImage, pagearea);

    }
    private void printcardbtn_Click(object sender, EventArgs e)
    {
         Print(pnlcard);

    }

任何建议将不胜感激。 问候...

0 个答案:

没有答案