2011年2月24日木曜日

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

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

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

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

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

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

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

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

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