tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re^7: AutoScroll
投稿日: 2009/07/25(Sat) 12:23
投稿者魔界の仮面弁士
>>> Panelにイメージを貼り付けているのですが、
>>> スクロールさせたときにそのイメージがゆがんでしまいます。
スクロールさせたときに、そのイメージの位置として望ましいのは
 (1) 一緒にスクロールしてほしい。
 (2) スクロールに連動させたくない。
 (3) 画像そのもののスクロールはどうでも良い。
のいずれでしょうか?


>>> スクロールしてもイメージを鮮明に表示させるには、
>>> どのようにしたら良いでしょうか?
Panel 単体で現象を軽減したいのであれば、Panel の Scroll イベントで
Panel の Invalidate メソッドを呼ぶようにすると、多少なりとも改善するかと思います。
さらに念のため、Application の Idle イベントで、Panel の Update メソッドも
呼んでおくと良いでしょう。スクロール中の描画崩れを回避できるわけでは無いですが、
少なくとも、スクロール完了時には正常に再描画されるようになります。


>> 試していませんが、Panel に直接張り付けるのではなく、その上に PictureBox を乗せて、
試してみたところ、Panel の上に PictureBox を乗せた場合には、
スクロール中でも描画の歪みは殆ど発生しなくなりました。


> Panelをクリックしたときの動作がありまして、
> PictureBoxを乗せるとその処理が行えなくなってしまうので
見た目の話では無く、クリック時の問題だけであるならば、
PictureBox のクリック時に、Panel のクリック時の処理を呼び出せば済むと思います。


> 残念ですが
『残念』という事は、Panel のクリック時の問題があるので採用はできなかったが、
AutoScroll 時の画像の歪みそのものは解消していた、という事でしょうか?

それとも、もしもクリック時の問題が解決できたとしても、現象の解決には
至らなかったという意味での『残念』なのでしょうか?


> Panelを透過させて後ろにあるPictureBoxを映し出せたら良いのですが。
出来ますが、それだと描画崩れの問題は解決できない(むしろ悪化する)と思いますよ。

一応手順的には、Panel を PictureBox の上に載せて(≠重ねて)、Panel の BackColor を
Transparent にする事で、その下にある PictureBox の画像が透けて見えるようになります。
なお、この場合のコントロール階層は、以下のようになります。
 [Form1]
 ┗[PictureBox]
  ┗[Panel1]
   ┗[その他のコントロール]

ただしフォーム デザイナ上では 「PictureBox1.Controls.Add(Panel1)」の状態にできず、
 [Form1]
 ┣[PictureBox]
 ┗[Panel1]
  ┗[その他のコントロール]
の状態にしかできないため、Form1.Designer.vb の InitializeComponent を
直接書き換える(あるいは、Form_Load 等で調整する)などの対処が必要ですけれどね。
http://dobon.net/vb/dotnet/control/labelonpicturebox.html

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。