こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

印刷イベントハンドラーにイメージデータを渡す方法が分りません

印刷イベントハンドラーにイメージデータを渡す方法が分りません
写真を読込み、それを修整した後に印刷するC#プログラムを作っています
イメージを印刷イベントハンドラに渡したいのですが、その方法が分りません
安直にファイル渡しをしていますがブザマそのものです
誰かにソースを見られたら笑われてしまいます
一般的でカッコ良い手段を教えてください


private void button1_Click(object sender, EventArgs e)
{
Image img1;
img1 = Image.FromFile("f:\\写真原簿.bmp"); //オリジナルを読込み

この辺りで写真を修整しています

img1.Save("f:\\写真修正.bmp"); //修正写真をセーブ

this.printDocument1.Print();
}

private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
Image img2;
img2 = Image.FromFile("f:\\写真修正.bmp"); //修正写真を再読込み

e.Graphics.DrawImage(img2, 100, 100); //イメージを出力
e.HasMorePages = false; //印刷終了
}

投稿日時 - 2010-09-10 11:19:39

QNo.6171821

すぐに回答ほしいです

質問者が選んだベストアンサー

 イメージデータを関数内のローカル変数じゃなく、クラスのメンバ変数に持たせればいちいちファイルを保存、再読込する必要はありません。

 修正処理も印刷処理も同じFormクラス内の処理なら、Formのメンバ変数として、

private Image img = null;

 このimgに対してオリジナル画像の読込、修正をかけ、そのまま印刷処理に渡せます。

 別のクラスにわかれているなら、共通データ用のクラスでも作っておきます。

class ComData
{
static public Image img = null;
}

で、アクセスするときはComData.imgに対して読込、修正、印刷を行ないます。

投稿日時 - 2010-09-10 22:58:42

お礼

ありがとうございます
(1)イメージデータをクラスのメンバ変数に持たす
(2)共通データ用のクラスでも作っておく
の双方の試行を行い、両者とも良好な結果を得ることが出来ました
ご指導に心から感謝申しあげます
ありがとうございました
なお実際には将来の拡張性を考慮して(2)の方法で行きたいと思っております
今後とも宜しくご教授頂きたいと存知ます

投稿日時 - 2010-09-12 13:38:43

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(1)