| Tram様 PATIO様 επιστημη様 返信遅れてすみません。 昨日は本業があわただしくて(社内のパソコン2台壊れて修理 + 業務システムの一部プログラムの自動化)あのあとアクセスできませんでした。帰社後は裏のお仕事してアクセスできたのが今朝。初めて自宅パソコンからアクセスしたら書き込みができなくて遅くなってしまいました。本当にごめんなさい。
>επιστημη様 >フォームのイベントハンドラがちゃんと動いているなら、 >そのハンドラの処理内で外部の描画ルーチンを呼べばいぃやないの。 以前フォームでイベントハンドラ設定して使おうとしたら、引数が合わないとか、呼び出そうとしたらオーバーロードがどうとかエラーが出るので以後設定してないです。
PATIO様 >描画処理その物は別の関数やクラスにしてしまっても良いのですが、 >描画を実行するために呼び出す処理はPaintイベントに対応した処理の中にないと駄目です。
>描画処理自体は即時描画をしたい場合等々の関係で別にまとめてしまうとか >やっても一向に構わないのですけれど、少なくともイベントハンドラから呼び出されていないと ←これが原因だということが皆さんの指摘でわかりました。 >OSからの再描画要求に答えられないので他の画面がのっかると消えてしまうのです。 >で、通常はイベントハンドラに渡って来たGraphicを描画用の関数なり、クラスに渡せば良いだけなので >それほど難しい処理ではないはずなんですけれど、うーむ。 ←ここがうまくいってないです。 >何か基本的な部分の理屈がうまく理解できていない様な気がします。
>基本的にイベントハンドラと呼ばれるものその物に関してはイベント受け取るクラスで無いと駄目だと思いますよ。 >まあ、厳密に言い出したら色々有りそうですが、基本的な意識としてはフォームのようにイベント受け取る事が出来るクラスに >作ると思います。イベントハンドラその物はフォームのようなイベントを受け取るクラスに合って、そこから呼び出される描画処理は ↑わかりました。こういうことを記述しているところがないんですよね。(気づいていないだけかな?)おかげさまでもやもやしていたところがすっきりした感じです。
Tram様 >private void Form1_Paint(object sender, PaintEventArgs e) >{ > IllustClass.Paint(Haikei, Hito, X, e.Graphics); >} この後の呼び出しで失敗してこれをはずしてしまいました。(^^;)
ということで皆さんのおかげで原因は理解しました。もう一度ハンドラの呼び出しを使う方法で組みなおしてやってみます。ありがとうございました。 |