首頁 > 軟體

C#實現自定義列印文字和圖片的範例程式碼

2022-04-19 10:00:45

C#中列印其實就是自己繪圖+呼叫系統列印函數,於是便有了以下操作

1.呼叫印表機設定

如果你想在列印前設定印表機屬性(或者切換印表機),請務必新增這段程式碼,否則電腦會直接按照預設的設定進行列印(印表機都沒法選)

//印表機設定
PrintDialog printDialog = new PrintDialog();
printDialog.Document = ptDoc;
printDialog.ShowDialog();

ptDoc就是列印的檔案內容,會在後面解釋

2.關聯檔案

等於我們需要新建一個空白的畫布,然後把我們需要的文字,圖片,線條依次擺上去

PrintDocument ptDoc = new PrintDocument();
ptDoc.DocumentName = "測試檔案";//在佇列中顯示的名字
ptDoc.PrintPage += PtDoc_PrintPage;//關聯內容生成方法

3.繪製內容

本次測試的內容分為:橫排文字,豎排文字,圖片,具體內容和位置可以通過修改引數進行調整

        private void PtDoc_PrintPage(object sender, PrintPageEventArgs e)
        {
            e.Graphics.Clear(Color.White);
            // 開始繪製檔案
            // 預設為橫排文字
            e.Graphics.DrawString("標題:列印測試",
                                    new Font(new FontFamily("宋體"), 40, FontStyle.Bold),
                                    System.Drawing.Brushes.Red,
                                    170, 10);
            // 橫線
            e.Graphics.DrawLine(Pens.Black, 20, 110, 800, 110);
            // 豎排文字
            e.Graphics.DrawString("內容",
                                    new Font(new FontFamily("宋體"), 14, FontStyle.Bold),
                                    System.Drawing.Brushes.Black,
                                    20, 120,
                                    new StringFormat(StringFormatFlags.DirectionVertical));
 
            e.Graphics.DrawString( this.txtName.Text,
                        new Font(new FontFamily("宋體"), 14, FontStyle.Bold),
                        System.Drawing.Brushes.Black,
                        20, 200);
 
            //e.Graphics.DrawImage(Image.FromFile(Path), 20, 250, 800, 100);    //會造成失真
 
            Image imgsample = Image.FromFile(Path);
            Point pt = Zoom(imgsample.Width, imgsample.Height, 200);
            e.Graphics.DrawImage(imgsample, 20, 250, pt.X, pt.Y);//直接列印可能出現太大列印不下
        }

        同時直接列印圖片的話可能造成圖片太大,可以寫一個縮放方法來限制圖片的最大尺寸

        private Point Zoom(int x, int y,int maxWidth)
        {
            Point pt = new Point(x, y);
            while (pt.X > maxWidth)
            {
                pt.X /= 2;
                pt.Y /= 2;
            }
            return pt;
        }

最後結果如下

 到此這篇關於C#實現自定義列印文字和圖片的範例程式碼的文章就介紹到這了,更多相關C# 自定義列印文字和圖片內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com