none
Panel におけるビューポートの設定は可能でしょうか RRS feed

  • 質問

  • Panel コントロールにおいて、ビューポートの設定が可能かどうかにつき、教えてください。

     

    ビューポートとは、Panel の可視領域の位置とサイズを意味していまして、

    VB6 などでは指定することが可能だったかと記憶していますが、.NETとなって

    Panel コントロールのHelpを見渡してみたのですがまだ見つけられずにいます。

     

    これについてご指導を賜りたく、なにとぞよろしくお願いします。

     

    2007年7月15日 9:40

回答

  • Transformプロパティ自体が System.Drawing.Graphicsのプロパティなので

    コントロールの配置自体には影響を及ぼさないように思います

     

    実際 パネルにピクチャーボックスを貼り付け 参考URLのコードを

    パネルの Paintイベントに記述してみましたが ピクチャーボックスのスクロール方向への影響はありませんでした

     

    VB6の頃に ViewPortといった考え方は一般フォームアプリではなかったように思います

    ActiveXドキュメントの場合にViewPort関係のプロパティがあるようですが座標変換用のTransformなどはないように思います

    どこかWebなどで参照可能な資料があれば当方でも調べてみますが ・・・

    2007年7月16日 8:50

すべての返信

  • パネルコントロールに ピクチャーボックスを貼り付けます

    親のパネルの AutoScrollをTrueに設定して

    子供のピクチャーボックスのImageプロパティに画像などを設定します

    親パネルより大きな子コントロールにがある場合にスクロールバーが表示されます

     

     

    2007年7月16日 1:43
  • ご回答、どうもです。助かります。

     

    この件ですが、おっしゃっている意味としましては、

    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等では記述が見つからず

    どうなっているのか知りたく思いました。

     

    こんなに都合よくコントロールの配置やサイズまで変わってくれたら都合がいい

    のですが・・・甘いかな。しかしその場合は、変換された座標との関係はどのような

    ものになるのかがわかりませんでした。ビューポートの意味はこれに関係してくる

    ためでした。

     

    2007年7月16日 4:50
  • Transformプロパティ自体が System.Drawing.Graphicsのプロパティなので

    コントロールの配置自体には影響を及ぼさないように思います

     

    実際 パネルにピクチャーボックスを貼り付け 参考URLのコードを

    パネルの Paintイベントに記述してみましたが ピクチャーボックスのスクロール方向への影響はありませんでした

     

    VB6の頃に ViewPortといった考え方は一般フォームアプリではなかったように思います

    ActiveXドキュメントの場合にViewPort関係のプロパティがあるようですが座標変換用のTransformなどはないように思います

    どこかWebなどで参照可能な資料があれば当方でも調べてみますが ・・・

    2007年7月16日 8:50
  • ご指導、感謝します。

     

    >Transformプロパティ自体が System.Drawing.Graphicsのプロパティなので

    >コントロールの配置自体には影響を及ぼさないように思います

     

    やはりそういうことですか、つまりGraphicsオブジェクトは、Controlの位置やサイズとは

    関係していない、ということなのですね。わかりました。

     

    さっそく実験までしてくださり、お手数とってくださりすみませんでした。

    大変ありがとうございました。

     

    VB6のとき、PictureBoxにおいて、こうした位置と指定範囲を使ってViewPortを設定して

    いた覚えがありまして、.NETにおいても同様の機能を期待した次第でした。

     

    教えてくださった考え方を元に、今後のコントロールの動的な配置に関して注意して

    作成したく思いました。ご指導ありがとうございました。

     

     

     

     

    2007年7月16日 13:26