トップ回答者
Panel におけるビューポートの設定は可能でしょうか

質問
回答
-
Transformプロパティ自体が System.Drawing.Graphicsのプロパティなので
コントロールの配置自体には影響を及ぼさないように思います
実際 パネルにピクチャーボックスを貼り付け 参考URLのコードを
パネルの Paintイベントに記述してみましたが ピクチャーボックスのスクロール方向への影響はありませんでした
VB6の頃に ViewPortといった考え方は一般フォームアプリではなかったように思います
ActiveXドキュメントの場合にViewPort関係のプロパティがあるようですが座標変換用のTransformなどはないように思います
どこかWebなどで参照可能な資料があれば当方でも調べてみますが ・・・
すべての返信
-
ご回答、どうもです。助かります。
この件ですが、おっしゃっている意味としましては、
PictureBoxを広くとっておいて、その上をSclrollして動くための窓というイメージ
を考えればよろしいでしょうか。なんとなくわかりました。
これに関連してもうひとつお聞きしたいことがあるのですが、よろしければ教えてください。
http://mail2.nara-edu.ac.jp/~asait/visual_basic/graphics2_vb/graphics2_vb.htm
のサイトを参照させていただいたのですが、ここで
Dim myMatrix As New Matrix
myMatrix.Translate(ox, oy)
myMatrix.Scale(1, -1)
myMatrix.Rotate(30)
e.Graphics.Transform = myMatrixのようにして座標変換が行えることがわかりました。これはPanelでも可能なのだと
思われましたが、その際、こうした座標変換を、Graphicsオブジェクトに対して
行った場合、その後で指定される座標、つまり、Panelにコントロールを配置して
いくような場合に、それら子コントロールのLocation座標やSize値に対しても
関係していくと考えてよいものでしょうか?
たとえば、この myMatrix.Scale(1, -1) を、myMatrix.Scale(0.5, -0.5) といった
縮尺を入れた場合、子コントロールをAddしてその Location やSize を指定した
場合、その縮尺による位置やサイズになって見えるように現れるのか、それとも
子コントロールのそれらのパラメータはこのGrapchisオブジェクトの縮尺などの
座標変換とは無関係なのでしょうか。その辺を知りたく思いました。
これについては時間取れ次第試してみたく思いますが、Help等では記述が見つからず
どうなっているのか知りたく思いました。
こんなに都合よくコントロールの配置やサイズまで変わってくれたら都合がいい
のですが・・・甘いかな。しかしその場合は、変換された座標との関係はどのような
ものになるのかがわかりませんでした。ビューポートの意味はこれに関係してくる
ためでした。
-
Transformプロパティ自体が System.Drawing.Graphicsのプロパティなので
コントロールの配置自体には影響を及ぼさないように思います
実際 パネルにピクチャーボックスを貼り付け 参考URLのコードを
パネルの Paintイベントに記述してみましたが ピクチャーボックスのスクロール方向への影響はありませんでした
VB6の頃に ViewPortといった考え方は一般フォームアプリではなかったように思います
ActiveXドキュメントの場合にViewPort関係のプロパティがあるようですが座標変換用のTransformなどはないように思います
どこかWebなどで参照可能な資料があれば当方でも調べてみますが ・・・
-
ご指導、感謝します。
>Transformプロパティ自体が System.Drawing.Graphicsのプロパティなので
>コントロールの配置自体には影響を及ぼさないように思います
やはりそういうことですか、つまりGraphicsオブジェクトは、Controlの位置やサイズとは
関係していない、ということなのですね。わかりました。
さっそく実験までしてくださり、お手数とってくださりすみませんでした。
大変ありがとうございました。
VB6のとき、PictureBoxにおいて、こうした位置と指定範囲を使ってViewPortを設定して
いた覚えがありまして、.NETにおいても同様の機能を期待した次第でした。
教えてくださった考え方を元に、今後のコントロールの動的な配置に関して注意して
作成したく思いました。ご指導ありがとうございました。