C# winfrom列印技術初探

來源:互聯網
上載者:User

標籤:

最近用到了winform去列印,網上查了一些資料,大概內容:

一 、首先有幾個類 PageSetupDialog 、 PrintDialog 、PrintDocument 、PrintPreviewControls\\PrintPreviewDialog。這幾個類的功能做簡要介紹

 
PageSetupDialog 這個是列印設定對話方塊。

PrintDialog 、列印對話方塊。
PrintDocument 、列印的具體內容在這個裡面設定是列印資料的對象哦。需要在這個的PrintPage事件下面寫繪圖的的形狀什麼的用GDI做。

PrintPreviewDialog:預覽列印對話方塊。

PrintPreviewControls\\這個是列印的一個預覽處理常式我這裡沒有用到,應該是可以即時顯示用的。

二、具體的操作步驟

1、建立winform項目及建立表單

2、拖取 列印 相關控制項
   PageSetupDialog 、 PrintDialog 、 PrintDocument 、PrintPreviewDialog

3、設定上述控制項的Document屬性為相應的PrintDocument

4、設定按鈕等控制項 及 添加相應按鈕事件

5、示意代碼如下

三、列印代碼如下

public partial class Form3 : Form
{
    public Form3()
    {
        InitializeComponent();
        this.printDocument1.OriginAtMargins = true;//啟用頁面邊界
        this.pageSetupDialog1.EnableMetric = true; //以毫米為單位

    }

    //列印設定
    private void btnSetPrint_Click(object sender, EventArgs e)
    {
        this.pageSetupDialog1.ShowDialog(); 
    }

    //預覽列印
    private void btnPrePrint_Click(object sender, EventArgs e)
    {
        this.printPreviewDialog1.ShowDialog(); 
    }

    //列印
    private void btnPrint_Click(object sender, EventArgs e)
    {
        if (this.printDialog1.ShowDialog() == DialogResult.OK)
        {
            this.printDocument1.Print();
        }
    }

    //列印內容的設定
    private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
    {                        
        ////列印內容 為 整個Form
        //Image myFormImage;
        //myFormImage = new Bitmap(this.Width, this.Height);
        //Graphics g = Graphics.FromImage(myFormImage);
        //g.CopyFromScreen(this.Location.X, this.Location.Y, 0, 0, this.Size);
        //e.Graphics.DrawImage(myFormImage, 0, 0);

        ////列印內容 為 局部的 this.groupBox1
        //Bitmap _NewBitmap = new Bitmap(groupBox1.Width, groupBox1.Height);
        //groupBox1.DrawToBitmap(_NewBitmap, new Rectangle(0, 0, _NewBitmap.Width, _NewBitmap.Height));
        //e.Graphics.DrawImage(_NewBitmap, 0, 0, _NewBitmap.Width, _NewBitmap.Height); 

        //列印內容 為 自訂常值內容 
        Font font = new Font("宋體", 12);
        Brush bru = Brushes.Blue; 
        for (int i = 1; i <= 5; i++)
        {
            e.Graphics.DrawString("Hello world ", font, bru, i*20, i*20);
        }
    }

四、列印中遇到的問題

1、紙張大小一般是多大的,列印的時候列印內容和紙張怎麼適應?怎麼計算列印的頁數,怎麼計算需要列印多少頁。

2、邊距怎麼設定。

3、怎麼列印多頁內容。

4、怎麼用代碼在頁面的固定位置粘貼預定義好的圖片。當圖片和文字重合的時候怎麼把文字顯示到圖片的上面。

5、列印按鈕只能夠觸發一次列印事件,當多頁列印的時候應該怎麼觸發呢?

6、想要列印表格的時候怎麼弄?

C# winfrom列印技術初探

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.