Click here to Skip to main content
15,886,689 members
Please Sign up or sign in to vote.
3.00/5 (1 vote)
See more:
Dear All;
I am trying to print on Card with special size using a card printer.
I wrote the code which was working great on my laptop , then when I used defferent screen I analys that it also depends on the screen size.

So Kindly Help me what modificication should be done in my code to adjust size depending on the screen resolution.

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);

}


any suggestion would be appreciated .
regards...
Posted
Comments
chester_it21 15-Dec-12 11:12am    
hi, may be your interest using WPF...i have sample applications for ID Card Print using WPF...You can download here ,in my solution tag..

1 solution

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900