misc.log

日常茶飯事とお仕事と

イメージビューワコントロール(2)

と思ったが、これはダメだった。ちらつきが激しすぎる。SetStyleを使ってダブルバッファや背景透明を指定できるかと思ったのだが、どうやらコントロールそのものやフォーム制御はできても、コントロール内に貼り付けた要素には利かないのか?(勘違いかもしれないが)。

次に試したのは、コントロールのベース部分に直接描画するという方法。なんでこれを選択したかというと、以下のよなSetStyleによる改善が見られたことと、コントロールそのものがAutoScrollプロパティを持っていることから、そこに書けばもしかして...と思ったため。

以下の記述をコンストラクタに記述した。

setstyle(ControlStyles.Opaque, True)
setstyle(ControlStyles.ResizeRedraw, True)
setstyle(ControlStyles.AllPaintingInWmPaint, True)
setstyle(ControlStyles.UserPaint, True)
setstyle(ControlStyles.DoubleBuffer, True)

しかしダメ。やはり子コントロールのサイズがスクロールバー登場のトリガになるので、これではスクロールバーが出なかった。

そこで、もしかしてパネルを2枚貼っていたのが原因かも?ということと、すでにPictureBoxのImageプロパティに依存しない方法(Paintメソッドを使う)に切り替えていたことから、PictureBoxを1枚だけ貼り付けてやってみたところ、大成功。うまくいった。

ただ1点難点が。なぜかマウススクロール操作が利くとき、利かないときがある。なぜだろう。