iT邦幫忙

0

C# 列印Form

c#
  • 分享至 

  • xImage

請教一下C#列印相關問題
我目前想要列印一份文件,這份文件的排版我已經用Form排版完畢了
而起初我要進行列印使用的方式是先建立一個Bitmap bmp將整份Form繪製成圖形,並將它列印下來
但列印的時候發現他的解析度非常非常的低因而去尋找其他方式

後來我又找了方法是要列印的時候把每個Label重新繪製

e.Graphics.DrawString(label2.Text, new Font("微軟正黑體", 24, FontStyle.Bold), Brushes.Black, 154, 21);

發現列印出來的非常清晰
但這樣的話我有幾十條label都需要去寫他的位置
更重要的是當初在排版時都是使用Panel跟TableLayoutPanel去進行排版
等於我沒辦法直接從屬性裡面找到他的位置我還要自己重新計算
請問有將我指定的label直接在原位繪製或是將整份Form都在列印時重新繪製的方式嗎

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
franx0722
iT邦新手 2 級 ‧ 2022-08-12 16:07:46

如果文件是固定格式只需要更改內容的固定欄位, 我覺得用畫方式的好慢.
可以google[C# 套版]的關鍵字

我目前的確是用固定欄位改內容

 Graphics g = e.Graphics;
            //e.Graphics.DrawImage(bmp, 0, 0);
            g.DrawImage(Properties.Resources.Y_E_logo, 10, 18, 135, 58);
            g.DrawString(OrderNumber.Text, new Font("微軟正黑體", 10, FontStyle.Regular), Brushes.Black, 600, 21);
            g.DrawString(OrderDate.Text, new Font("微軟正黑體", 10, FontStyle.Regular), Brushes.Black, 600, 40);
            g.DrawString(label2.Text, new Font("微軟正黑體", 24, FontStyle.Bold), Brushes.Black, 154, 21);

            g.DrawString(label20.Text, new Font("微軟正黑體", 12, FontStyle.Regular), Brushes.Black, 10, 75);
            g.DrawString(MN.Text, new Font("微軟正黑體", 16, FontStyle.Regular), Brushes.Black, 91, 70);
            
            g.DrawString(label15.Text, new Font("微軟正黑體", 12, FontStyle.Regular), Brushes.Black, 10, 103);//聯絡人
            g.DrawString(SN.Text, new Font("微軟正黑體", 12, FontStyle.Regular), Brushes.Black, 91, 103);
            g.DrawString(label6.Text, new Font("微軟正黑體", 12, FontStyle.Regular), Brushes.Black, 10, 124); //連絡電話
            g.DrawString(SP.Text, new Font("微軟正黑體", 12, FontStyle.Regular), Brushes.Black, 91, 124); 
            g.DrawString(label7.Text, new Font("微軟正黑體", 12, FontStyle.Regular), Brushes.Black, 10, 145);//廠商電話
            g.DrawString(MT.Text, new Font("微軟正黑體", 12, FontStyle.Regular), Brushes.Black, 91, 145);
            g.DrawString(label5.Text, new Font("微軟正黑體", 12, FontStyle.Regular), Brushes.Black, 10, 166);//交貨日期
            g.DrawString(DD.Text, new Font("微軟正黑體", 12, FontStyle.Regular), Brushes.Black, 91, 166);

            g.DrawString(label17.Text, new Font("微軟正黑體", 12, FontStyle.Regular), Brushes.Black, 220, 103);//出貨方式
            g.DrawString(Send.Text, new Font("微軟正黑體", 12, FontStyle.Regular), Brushes.Black, 301, 103);
            g.DrawString(label8.Text, new Font("微軟正黑體", 12, FontStyle.Regular), Brushes.Black, 220, 124);//聯絡分機
            g.DrawString(SPF.Text, new Font("微軟正黑體", 12, FontStyle.Regular), Brushes.Black, 301, 124);
            g.DrawString(label11.Text, new Font("微軟正黑體", 12, FontStyle.Regular), Brushes.Black, 220, 145);//廠商傳真
            g.DrawString(MF.Text, new Font("微軟正黑體", 12, FontStyle.Regular), Brushes.Black, 301, 145);
            g.DrawString(Condition_Lab.Text, new Font("微軟正黑體", 12, FontStyle.Regular), Brushes.Black, 220, 166);//付款條件
            g.DrawString(PayDay.Text, new Font("微軟正黑體", 12, FontStyle.Regular), Brushes.Black, 301, 166);

            g.DrawString(TotalOff.Text, new Font("微軟正黑體", 12, FontStyle.Regular), Brushes.Black, 10, 710);//折扣
            g.DrawString(NoTaxD.Text, new Font("微軟正黑體", 12, FontStyle.Regular), Brushes.Black, 200, 710);//未稅總額
            g.DrawString(Tax.Text, new Font("微軟正黑體", 12, FontStyle.Regular), Brushes.Black, 420, 710);//應稅額
            g.DrawString(HaveTaxD.Text, new Font("微軟正黑體", 12, FontStyle.Regular), Brushes.Black, 600, 710);//含稅總額

我要發表回答

立即登入回答