タイトル : 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 |