エクセルなどで作ったカンマ区切りの数値データファイルを開き、それをもとにWindow内に簡単なグラフを描き、それを印刷するというアプリケーションを作っています。グラフの描画と印刷はできたのですが、今度はそのグラフをビットマップ形式の画像ファイルとして保存したいと考えています。参考書やヘルプを見ているのですが、具体的に何をすればいいのか分からず、悩んでいます。どなたか、ご教示願えないでしょうか?以下に、プログラムの流れのみを示します。わざわざコードにするまでもないのですが・・・。
Windowを二つ用意しています。一つはMainWndで、ここでデータファイルのオープンをし、カンマ区切りの数値データを読み込みます。ファイルには複数のデータセットが含まれており、データセット毎に配列に数値を格納していきます。MainWndに配置したリストボックスにデータセット名が羅列されるようになっており、データセットのうちどれか一つを選択すると、PlotWndという別ウィンドウを開いてそこにそのデータセットのグラフを描画します。
コード: 全て選択
'====Openボタンを押したとき====
Sub MainWnd_IDM_OPEN_MenuClick()
'(略)ファイルを開くダイアログでファイルを選択
'(略)Open fileName$ For Input As 1 などとしてカンマ区切りの数値データをデータセット毎に配列に読み込み
'(略)MainWndに作ったリストボックスにデータセット名を羅列して表示
End Sub
'====データリストでいずれかを選択(クリック)したとき====
Sub MainWnd_DataList_SelChange()
'(略)データリストで何番目のデータセットを選択したかを取得
DataNo=SendDlgItemMessage(hMainWnd,DataList,LB_GETCURSEL,0,0)
'(略)グラフ描画用ウィンドウPlotWndを開く
ShowWindow(hPlotWnd,SW_SHOWNORMAL)
'(略)PlotWndに再描画要求を出す
InvalidateRect(hPlotWnd,ByVal 0,1)
End Sub
コード: 全て選択
'====PlotWndにグラフを描画====
Sub PlotWnd_Paint(hDC As HDC)
'(略)ペンやブラシを用いて、上で選択したDataNoで指定された数値データ配列についてLineToやEllipse命令語で折れ線グラフのようなものを描きます。
End Sub
'====印刷メニューが押されたとき====
Sub PlotWnd_IDM_PRINT_MenuClick()
'(略)印刷ダイアログを開いてプリンタを選択
hDC=pd.hDC
'(略)
'印刷ジョブ開始
StartDoc(hDC, docinfo)
StartPage(hDC)
'下のPlotWnd_Printプロシージャを呼ぶ
PlotWnd_Print(hDC)
EndPage(hDC)
EndDoc(hDC)
'(略)
End Sub
'====プリンタのデバイスコンテキストに描画====
Sub PlotWnd_Print(hDC As DWord)
'(略)Sub PlotWnd_Paintでウィンドウに描画したときとほぼ同じ要領で、ペンやブラシを用いて、上で選択したDataNoで指定された数値データ配列についてLineToやEllipse命令後で折れ線グラフグラフを描画。PlotWndに描画したときとは少しだけグラフの仕様が異なっている。
End Sub
長々と書いてしまいましたが、最後までお読みいただきどうもありがとうございました。アドバイスいただければ大変嬉しいです。どうぞよろしくお願い申し上げます。