タイトル : Re^8: AutoScroll 投稿日 : 2009/07/25(Sat) 14:21 投稿者 : VB
> スクロールさせたときに、そのイメージの位置として望ましいのは > (1) 一緒にスクロールしてほしい。 > (2) スクロールに連動させたくない。 > (3) 画像そのもののスクロールはどうでも良い。 > のいずれでしょうか? (1)です。 > Panel 単体で現象を軽減したいのであれば、Panel の Scroll イベントで > Panel の Invalidate メソッドを呼ぶようにすると、多少なりとも改善するかと思います。 > さらに念のため、Application の Idle イベントで、Panel の Update メソッドも > 呼んでおくと良いでしょう。スクロール中の描画崩れを回避できるわけでは無いですが、 > 少なくとも、スクロール完了時には正常に再描画されるようになります。 これだと、(1)の一緒にスクロールと言う点でダメでした。 > 見た目の話では無く、クリック時の問題だけであるならば、 > 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 Form1.Designer.vbの書換えですか。大変そうですね。f(^^; ですが、そうするしかないような気もしてきました。 ない頭で色々考えてそれでも、実現不可能な場合 保留としていた方法でコーディングさせてもらいたいと思います。 アドバイスありがとうございました。 |