トップ回答者
ピクチャボックスのスクロールバーについて

質問
-
こんにちは!
今 C# ExpressEdition にて画像ビューワを作っています。
独自フォーマットの画像を4096*4096などの比較的大きな画像を表示するためのものです。
ピクセル単位の確認を行うため、ズーム機能が必須で 16倍くらいズームすると
例えば 幅が2048(pixel)*16(倍)=32768(pixel)となり、ピクチャボックスで指定できるサイズの限界を超えてしまいます。
(32767では大丈夫なようなので、ピクチャボックスのコントロールサイズは2バイト長のようです。)
そこで画像を部分的に切り出してDrawImage()を行うようにしたのですが、
これではクライアントサイズだけしか使用しないため、ピクチャボックスのスクロールバーが使えません。
そこで自前でスクロールバーを表示したり消したりしなくては行けず、困っています。
スクロールバーを表示するとクライアントサイズがスクロールバー分減るため、
実装が非常に複雑になってしまいました。
なんとかピクチャボックスのスクロールバーを使えないものかと困っています。
グラフィックツールなどを作る場合には、ズームが必要になると思うので、もっと上手い解決方法があると思うのですが、今の自分にこれがいっぱいいっぱいでして…
そこで、ご教授して頂きたく書き込みをしました。
よろしくおねがいします。
回答
-
諸農です。
.NET Framework クラス ライブラリ
ScrollBar クラス
http://msdn2.microsoft.com/ja-jp/library/system.windows.forms.scrollbar(VS.80).aspx
にあるサンプルコードではPictureBoxにScrollBarコントロール(HとVですが)を後付にして管理しているようですので参考になるとおもいます。
-
やはりピクチャボックスに頼ろうとせず自分で制御すべきなんですね。
勉強になりました。
ちなみに自分が実装していたのは、諸農さんが教えてくれた
>.NET Framework クラス ライブラリ
>ScrollBar クラス
>http://msdn2.microsoft.com/ja-jp/library/system.windows.forms.scrollbar(VS.80).aspx
とほぼ同じことをやっていました。
構成が少し違うくらいで実質一緒でした。
正直、スクロールバーが現れた時に、スクロールバー自身に現れた分だけスクロール量を増やさなければならないというのが、
理屈は分かるもののどうにもスマートじゃないなと、えらく悩んでしまいました。
とりあえず実装できたからいいじゃないか、と割り切れればよかったのでしょうが…
みなさんありがとうございました。
すべての返信
-
諸農です。
.NET Framework クラス ライブラリ
ScrollBar クラス
http://msdn2.microsoft.com/ja-jp/library/system.windows.forms.scrollbar(VS.80).aspx
にあるサンプルコードではPictureBoxにScrollBarコントロール(HとVですが)を後付にして管理しているようですので参考になるとおもいます。
-
やはりピクチャボックスに頼ろうとせず自分で制御すべきなんですね。
勉強になりました。
ちなみに自分が実装していたのは、諸農さんが教えてくれた
>.NET Framework クラス ライブラリ
>ScrollBar クラス
>http://msdn2.microsoft.com/ja-jp/library/system.windows.forms.scrollbar(VS.80).aspx
とほぼ同じことをやっていました。
構成が少し違うくらいで実質一緒でした。
正直、スクロールバーが現れた時に、スクロールバー自身に現れた分だけスクロール量を増やさなければならないというのが、
理屈は分かるもののどうにもスマートじゃないなと、えらく悩んでしまいました。
とりあえず実装できたからいいじゃないか、と割り切れればよかったのでしょうが…
みなさんありがとうございました。