前提・実現したいこと
C# WinForms VS2017 で複数ページの文書を印刷しようとしています。
印刷はできるのですが、とても遅く感じます。下記コードで1枚200msほどかかります。
描画する項目が多くなるとさらに遅くなる感じです。
実はこれを回避する方法を過去に見つけたような記憶があります。
しかしそれが何だったのか全く思い出せません。
該当のソースコード
C#
1using System; 2using System.Collections.Generic; 3using System.Data; 4using System.Drawing; 5using System.Text; 6using System.Threading.Tasks; 7using System.Windows.Forms; 8 9using System.IO; 10using System.Drawing.Printing; 11 12 13namespace MyTest 14{ 15 public partial class MyTestForm : Form 16 { 17 public MyTestForm() 18 { 19 InitializeComponent(); 20 } 21 22 PrintDocument pd = new PrintDocument(); 23 private int curPageNumber; // 現在のページ番号 24 25 26 /// <summary> 27 /// 印刷をします 28 /// </summary> 29 /// <param name="sender"></param> 30 /// <param name="e"></param> 31 private void buttonTestPrint_Click(object sender, EventArgs e) 32 { 33 try 34 { 35 try 36 { 37 PrintDocument pd = new PrintDocument(); 38 pd.PrintPage += new PrintPageEventHandler 39 (this.pd_PrintPage2); 40 pd.Print(); 41 } 42 finally 43 { 44 45 } 46 } 47 catch (Exception ex) 48 { 49 MessageBox.Show(ex.Message); 50 } 51 } 52 53 54 /// <summary> 55 /// 印刷イベント 56 /// </summary> 57 /// <param name="sender"></param> 58 /// <param name="ev"></param> 59 private void pd_PrintPage2(object sender, PrintPageEventArgs ev) 60 { 61 ev.Graphics.DrawString(curPageNumber.ToString(), new Font("メイリオ",50), Brushes.Black, 62 10, 10, new StringFormat()); 63 64 curPageNumber++; 65 66 if (curPageNumber<20) 67 ev.HasMorePages = true; 68 else 69 ev.HasMorePages = false; 70 } 71 } 72} 73
ご回答よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/09/08 18:39