Loading [MathJax]/extensions/tex2jax.js

2011年2月24日木曜日

PDFのぺーじのサイズを変更する2

ようやく着手しました。C#で作り始めました。
UIはこんな感じ。

コンボボックスに用紙サイズを登録する部分で
サイズをひとつづつ追加してたらとてもパフォーマンスが悪くなってしまいました。

以下のような変更ではやくなったので、メモ。

コントロールへの項目の追加にはaddrange()を使用すべきという
記述がこちらにあったので、まずはそれを実施。
http://msdn.microsoft.com/ja-jp/magazine/ee221437.aspx

for文のなかで配列を作って、最後にコンボボックスにaddrange()で代入。という風に作り変えてみたがあまり変化がなかった。

その後、コレクションを配列に変換できることがわかり、そのように手直ししたところ
パフォーマンス的な問題はなくなった。for文もなくなりとてもすっきり。

■変更前のソース
  1. PaperSize pkSize;  
  2. for (int i = 0; i < printDoc.PrinterSettings.PaperSizes.Count; i++ )  
  3. {  
  4.     pkSize = printDoc.PrinterSettings.PaperSizes[i];  
  5.     comboPaperSize.Items.Add(pkSize);  
  6. }  
■変更後のソース
  1. PaperSize[] pkSizearr = new PaperSize[printDoc.PrinterSettings.PaperSizes.Count];  
  2. printDoc.PrinterSettings.PaperSizes.CopyTo(pkSizearr, 0);  
  3. comboPaperSize.Items.AddRange(pkSizearr);  
★ついでにコレクションから配列に変換する方法もわかったので、メモ
  1. コレクション.CopyTo(配列, 0)  

0は何番目からコピーするかをしていする。
0 件のコメント:
コメントを投稿