ピクチャボックスに描画した線を再描画せずに復元するには?

解決


yuki  2006-02-17 01:38:11  No: 94221

ピクチャボックスにグラフを描画し、それをフォームのリサイズに対応させる為に、現在はScaleを設定して描画ロジックを再実行させることで実現しているのですが、グラフの座標を計算する負荷を軽減させたいと思っています。

そこでどうにか描画ロジックを最初の一回だけにしたいと考えているのですが、描画した座標をリサイズ時に復活させるような方法はないのでしょうか?

そのような方法がない場合は、仕方がないのでグラフの座標を計算した後にすぐ描画するのではなく、座標をメモリに退避させてリサイズ時にはそれを描画するしかないと思っています。(グラフの座標計算にDBアクセスが必要なのでリサイズの度では辛いんで・・・)


Dental  2006-02-17 01:48:16  No: 94222

グラフの再描画が、それほど頻繁に発生するというわけでは無いならば、
bitmap 画像ではなく、Windows metafile 画像を生成するようにして、
それを表示させるようにしてみる、とか。


yuki  2006-02-17 02:16:06  No: 94223

Dentalさん。ご回答ありがとうございます。

ピクチャボックスに描画した線を画像(ファイルとして?)として保存することが出来るのでしょうか?
すみません。ピクチャボックス関連はちょっと弱いもので・・・現在がbitmap画像として扱われている(?)のかどうかも良く分かりません。
もし宜しければ使用するメソッドか何かを教えて頂ければ後は自力で調べますので、少しヒントを下されば助かります。


我龍院忠太  2006-02-17 03:12:00  No: 94224

先ず開発環境を書きましょう。
それからサイズは何種類有るのですか?

>ピクチャボックスに描画した線を画像(ファイルとして?)として保存することが出来るのでしょうか?
VB6ならMSDNで「SavePicture ステートメント」を調べれば使用例が載っています。


yuki  2006-02-17 03:49:48  No: 94225

我龍院忠太さん。ご回答ありがとうございます。
大変失礼しました。開発環境はWin2000のVB6です。

<FONT COLOR="#CC8000">&gt;それからサイズは何種類有るのですか?
</FONT>
フォームのリサイズに合わせて縦横無尽に変更できればベストかと。

Dentalさんと我龍院忠太さんのご指導を参考に
「SavePicture ステートメント」と「PaintPicture メソッド」を使用して画像の保存と描画は出来ました。ありがとうございます。

しかし画像の描画内容が細い線なので、PaintPictureでサイズを変更してしまうとかなりギザギザになってしまうようです。
他にも画像の貼り付け方があるのか模索中ですが、もし良い方法があったら教えて頂けると助かります。


我龍院忠太  2006-02-17 05:51:08  No: 94226

ここの掲示板はHTMLのタグは使用できません。
今ひとつ何をしたいのかはっきりしませんが、
画像の縮小、拡大なら「bitblt」が便利です。


yuki  2006-02-17 06:11:38  No: 94227

我龍院忠太さん。ご指導ありがとうございます。

分かりにくい説明で申し訳ありません。
ピクチャボックスに描画したグラフをForm_Resizeイベントと連動させて拡大・縮小したい。というのが本来の目的です。

ピクチャボックスをクリアしてグラフを再描画するのが、一番簡単だとは思っているのですが、描画した内容をそのまま使用できないかと試行錯誤しております。

やはり.BMPだと画像が乱れてしまうらしいので、EMF.を生成する方法を調べています。
bitbltも早速、試してみます。


魔界の仮面弁士  2006-02-17 06:38:55  No: 94228

たとえば、VB に付属の metafile ( 2DARROW4.WMF とか) を
Form の Picture に割り当てておくと、特に何もコードを書かなくても、
自動的にフォームサイズに連動して拡大縮小されますが、
そういう動作を期待されているのでしょうか?

で、メタファイルの生成を望むのであれば、CreateEnhMetaFile などの
API を試してみてください。

このあたりについては、古市さんのサイト(今は閉鎖されています)に、
『解説&パーツ連載 「メタファイルの活用」』という記事がありました。

http://www.netlaputa.ne.jp/~stadt/vb/
http://web.archive.org/web/20020203211854/www.netlaputa.ne.jp/~stadt/vb/index.html

上は、元のURLで、下が archive.org に残されていたログです。
既に、ところどころ見れなくなっていますが、[第2回]と[第3回]の
サンプルが辛うじて残っているようなので、手がかりにはなるでしょう。


yuki  2006-02-17 18:10:00  No: 94229

魔界の仮面弁士さん。サンプルのご紹介をありがとうございます。

CreateEnhMetaFileでメタファイルを生成することで
目的を達成することが出来ました。

みなさん、ご親切に指導して下さってありがとうございます。
とても助かりました。


yuki  2006-02-17 18:10:43  No: 94230

解決マークを忘れました。(^^)


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加