DOBON.NET DOBON.NETプログラミング掲示板過去ログ

画像拡大後のスクロール表示について

環境/言語:[Windows2000]
分類:[.NET]

vb.netについておたずねします。
画像をpanelを使ってスクロール表示できるようにしました。
その画像を拡大してから、スクロールすると、それまで見えなかった部分の大きさがもとのままなので、ずれて表示されてしまいます。
拡大した状態で、スクロールしても拡大した画像がスクロールされるようにするにはどのようにしたらよいのでしょうか。
よろしくお願い申し上げます。
上記について、何かヒントだけでもいただけるとありがたいです。
よろしくお願いします。
■No5278に返信(青樹さんの記事)
> 画像をpanelを使ってスクロール表示できるようにしました。
> その画像を拡大してから、スクロールすると、それまで見えなかった部分の大きさがもとのままなので、ずれて表示されてしまいます。

どのような方法で表示させているのでしょうか?例えば、PictureBoxのSizeModeプロパティをStretchImageにして拡大表示していればそのようなことはないでしょうし、そのほかの方法でも適切な処理をしていればずれることはないと思いますが。

コメントどうもありがとうございます。

> どのような方法で表示させているのでしょうか?例えば、PictureBoxのSizeModeプロパティをStretchImageにして拡大表示していればそのようなことはないでしょうし、そのほかの方法でも適切な処理をしていればずれることはないと思いますが。

SizeModeをAutoSizeにしてやりましたが、StretchImageにして行ってもうまくいきませんでした。

私が試した内容は、
.net TIPSのコードを参考にさせていただいたものです。

すなわち
Panelを配置し、AutoScrollをTrueにし、その上に
PictureBoxを配置し、SizeModeをAutoSizeにしました。
そして、ボタンをクリックすると、画像が拡大表示するように
ボタンイベントの所に、拡大表示のコードをそのまま書きました。

ここまでで、スクロールバーは表示され、ボタンをクリックすると
拡大表示までできるようになりました。

でも、スクロールすると、非表示だった部分が普通のサイズで
でてきてしまうのです。

それで、PictureBoxのPaintイベントにも、拡大用のコードを
とりあえずいれてみました。
すると、スクロール矢印ボタンをクリックし、少しずつスクロール
させると、とりあえず、非表示の部分だった所も拡大状態でスクロール
されるのですが、スクロールバードラッグで一気にスクロールすると、
Paintイベントは発生されないようで、やっぱり、元のサイズの
表示になってでてきてしまいます。

よく理解せずコードをいじっているから悪いのだと思いますが
何とかならないでしょうか。

何卒、アドバイスをお願い申し上げます。
■No5760に返信(青樹さんの記事)
「どのような方法で表示させているのか」に対する回答が見つかりません。最低でもピクチャボックスのImageプロパティを使っているのか、DrawImageメソッドを使っているのか書いていただかないと、私としてはどうしようもありません。

私が「StretchImage云々」と書いたのは、Imageプロパティを使った時のことです。

ImageプロパティとDrawImageメソッドの違いが分からないということであれば、

DOBON.NET .NET Tips - PictureBoxのImageプロパティに関するよくある勘違い
http://dobon.net/vb/dotnet/graphics/pictureboximageanddrawimage.html

をご覧ください。

DOBON.NET | プログラミング道 | プログラミング掲示板