Windows Form C#中的打印面板 [英] Print Panel in Windows Form C#

查看:62
本文介绍了Windows Form C#中的打印面板的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我这里有个情况.我需要在Visual Studio 2010中使用C#在Windows窗体中创建员工卡结构.该结构可能包含带有白色背景的标签和图片框.创建它没有问题,但我还在此表单上提供了一个名为打印"的按钮,以便用户可以打印该卡.我用谷歌搜索,但没有找到具体的东西.请帮帮我.

I have a situation here. I need to create an employee card structure in windows form using C# in Visual Studio 2010. The structure may contains labels and picture boxes with white background. I had no problem creating it but I am also giving a button named "Print" on this form so that user can print that card. I googled it but nothing concrete stuff found. Please help me out.

namespace Employee_Card_Manager
{
public partial class Card : Form
{
    public Card(String a, String b, String c, String d, String e, String f, String g, String h, String i)
    {
        InitializeComponent();
        this.label2.Text = a;
        this.label9.Text = b;
        this.label10.Text = c;
        this.label11.Text = d;
        this.label12.Text = e;
        this.label13.Text = f;
        this.label14.Text = g;
        this.label16.Text = h;
        this.pictureBox1.Image = Image.FromFile(i);
        Image myimg = Code128Rendering.MakeBarcodeImage(h, 2, true);
        this.pictureBox2.Image = myimg;
    }
    private void button1_Click(object sender, EventArgs e)
    {
          //Print Card Code
    }
  }
}

卡片模板如下:

我已将所有卡结构放置在面板控件上,并将面板背景设置为白色.您可以填写将打印此卡的代码吗?谢谢

I have placed all card structure on a Panel Control and set Panel background to white. Can you fill the code which will print this card? Thanks

推荐答案

我发现以下代码非常有效!

I have found following code which is working perfectly!!

    //declare event handler for printing in constructor
        printdoc1.PrintPage += new PrintPageEventHandler(printdoc1_PrintPage);

    //Rest of the code
    Bitmap MemoryImage;
    public void GetPrintArea(Panel pnl)
    {
        MemoryImage = new Bitmap(pnl.Width, pnl.Height);
        pnl.DrawToBitmap(MemoryImage, new Rectangle(0, 0, pnl.Width, pnl.Height));
    }
    protected override void OnPaint(PaintEventArgs e)
    {
        if (MemoryImage != null)
        {
            e.Graphics.DrawImage(MemoryImage, 0, 0);
            base.OnPaint(e);
        }
    }
    void printdoc1_PrintPage(object sender, PrintPageEventArgs e)
    {
        Rectangle pagearea = e.PageBounds;
        e.Graphics.DrawImage(MemoryImage, (pagearea.Width / 2) - (this.panel1.Width / 2), this.panel1.Location.Y);
    }
    public void Print(Panel pnl)
    {
        pannel = pnl;
        GetPrintArea(pnl);
        previewdlg.Document = printdoc1;
        previewdlg.ShowDialog();
    }
    private void button1_Click(object sender, EventArgs e)
    {
        Print(this.panel1);
    }

这篇关于Windows Form C#中的打印面板的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆