某お絵かきチャットにライン機能が無く作者に要望したのですが対応してもらえず、
病むをずVBで代用品を作っています。
(ここでいうライン機能というのは指定した開始点から終了点までに直線を引く機能のことを指しています)
大まかな流れは次の通りです。
※WebBrowserの表示先はお絵かきチャットのJavaアプレットです。
(1)Form上にWebBrowserとPictureBox、PictureBox上にLineを配置する
(2)FormのAutoReDrawはFlase、PictureBoxのAutoReDrawはTrueにする
(3)Formロード時にPictureBoxのZoderを0にしVisibleをFlaseにする
(4)BitBltのソースにFormのhDCを渡し絵画先をPictureBoxにし擬似的にWebBrowserの内容を表示する
(5)PictureBoxをRefreshし、PictureBoxのVisibleをTrueにする
※Refreshするとちらつきが抑えられるという記事と、
AutoDrawをTrueにしているときはRefreshが実行されるまで
表示が更新されないという記事を見かけたためRefreshしていますが
実際はRefreshの有無に関わらずVisibleをTrueにした際更新されているようです)
(6)PictureBoxでマウスをドラッグさせたときにドラッグ開始点から現在位置までにLineを表示する
(7)PictureBoxのマウスアップイベントでPictureBoxの表示を非表示にする。
(8)Lineの開始点から終了点までAPIでマウスをドラッグさせ線を絵画する
(9)再度(4)から再開
このような仕様で完成させたのですが、
PictureBoxを非表示にする際(3、7の工程)にWebBrowserがちらついてしまいます。
何か対策は御座いませんでしょうか?
先輩方のご教示を是非よろしくお願い致します。
訂正です。
>PictureBoxを非表示にする際(3、7の工程)にWebBrowserがちらついてしまいます。
3の工程はフォームロード時ですのでチラつきはありません。
正しくは、
PictureBoxを非表示にする際(7の工程)にWebBrowserがちらつきが生じてしまいます。
でした。
連投失礼致しました。
度々申し訳ないです。
WebBrowserのデバイスコンテキストの取得方法があるようですので、
こちらを使いサブクラス化してみようと思います。
引き続き何かいい案がありましたらご教示頂けますと幸いです。
レスが付かない様なので上げさせて頂きます。
>WebBrowserのデバイスコンテキストの取得方法があるようですので、
サブクラス化を前提とするならデバイスコンテキスト(hDC)ではなくウィンドウハンドル(hWnd)です。
サブクラス化するにしてもWebBrowser上ではMouseMoveイベントなどは発生しないので恐らく不可能かと。
私では力不足なので他の方お願いします。
遅れまして申し訳ありません。
レスありがとうございます。
>サブクラス化を前提とするならデバイスコンテキスト(hDC)ではなくウィンドウハンドル(hWnd)です。
すみません、混乱してましてごっちゃになってしまいました。
>サブクラス化するにしてもWebBrowser上ではMouseMoveイベントなどは発生しないので恐らく不可能かと。
サブクラス化すればメッセージがコントロールできるとあったのですが、
メッセージを作ることはできないのですね。
>私では力不足なので他の方お願いします。
十分参考になりましたありがとうございます。
しかしこれで振り出しに戻ってしまいました・・・。
先輩方にいい案をお持ちの方がいらっしゃいましたら是非とも御教示頂けますよう宜しくお願いいたします。
困難なようですので作者が対応するまで待ちたいと思います。
ありがとうございました。
ツイート | ![]() |