none
PictureBoxのSizemode=Zoomで上端余白を消す方法 RRS feed

  • 質問

  •  PictureBoxのSizemode=Zoomで上端余白を消す方法がわかりません。

    PictureBoxコントロールの高さより、小さい高さのイメージを読み込んだときに
    SizemodeをZoomに設定すると、イメージ中心の高さがPictureBoxコントロールの高さの中央に表示されますが
    このイメージをPictureBoxのTopと同じ位置から表示したいのですが、なにかよい方法はないでしょうか。

    余白ができてしまい、スクロールしないとイメージの上端が下の方に来ることがあります。
    イメージはボタンを押すごとに次々表示していますが、そのたびにスクロールするのは不便です。

    現在、TabcontrolにPictureboxをおき、イメージを表示しています。
    2009年2月25日 14:20

回答

  • VB136 さん の発言:

    VB6ユーザーのためのVB2005という本ももっていますが、もっと
    VB.NETの特徴や、新しくなったもののが一から詳しく平易に説明された本
    は無いでしょうか。


    何をもって分かりやすい、何をもって簡単であるといったものは主観に基づきます。(人それぞれであるということ)
    そのため、私からどの書籍が良いとかお薦めすることはできません。

    大きな書店などで、自分にとって分かりやすい本を選ぶのが確かなところだと思います。
    通販や取り寄せですると、中身と自分のレベルが合わずに、読まず仕舞いに終わることもあり得ます。


    解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。
    • 回答としてマーク VB136 2009年3月2日 3:43
    2009年2月28日 7:44
    モデレータ

すべての返信

  • 自分でDrawImageするコードを書いてみてはいかがでしょうか。

    http://dobon.net/vb/dotnet/graphics/drawimage.html
    http://dobon.net/vb/dotnet/graphics/scaling.html


    解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。
    2009年2月25日 14:40
    モデレータ
  •  'Bitmapオブジェクトの作成(画像ファイルを読み込む)

    リンクを参照して試しましたが
    Private _bmp As New Bitmap("C:\Blue hills.jpg")
      ↑
    Dim でないといけないようです。

    'または、次のようにも出来る
    'Dim _bmp As Image = Image.FromFile("C:\Blue hills.jpg")

    'PictureBox1のイベントハンドラ

    Private Sub PictureBox1_Paint(ByVal sender As ObjectByVal e As System.Windows.Forms.PaintEventArgs) _
            Handles PictureBox1.Paint
        'Paintイベントハンドラで画像を表示する
        e.Graphics.DrawImage(_bmp, 0, 0, _bmp.Width, _bmp.Height)
                          ↑          ↑         ↑   
                            宣言されていないと出ます。
    End Sub



    上記コードでは 正常に動きませんでした。
    どのように修正したらよいのでしょうか。 paintイベントを発生させる方法は書いてありましたが
    そこもエラーが出ていました。
    VB.NETと書かれていましたがVB2008の文法の変更なのでしょうか。
    2009年2月26日 13:16
  • VB136 さん の発言:

     'Bitmapオブジェクトの作成(画像ファイルを読み込む)

    リンクを参照して試しましたが
    Private _bmp As New Bitmap("C:\Blue hills.jpg")
      ↑
    Dim でないといけないようです。


    これをどこに書いたのでしょうか?
    イベントや関数の中に書いたりしていませんか?
    クラスのメンバー変数になるようにきちんと書いて下さい。

    VB136 さん の発言:

    Private Sub PictureBox1_Paint(ByVal sender As ObjectByVal e As System.Windows.Forms.PaintEventArgs) _
            Handles PictureBox1.Paint
        'Paintイベントハンドラで画像を表示する
        e.Graphics.DrawImage(_bmp, 0, 0, _bmp.Width, _bmp.Height)
                          ↑          ↑         ↑   
                            宣言されていないと出ます。
    End Sub

    クラスのメンバー変数(かPaintイベントのローカル変数)に_bmpが必要です。
    先に指摘した、_bmp変数を正しく定義すれば、エラーは消えるかもしれません。


    VB136 の発言:

    VB.NETと書かれていましたがVB2008の文法の変更なのでしょうか。

    お使いのVBのバージョンがよく分かりませんが、このサンプルは2005、2008共に利用できます。


    なお、切り貼りしたり、試行錯誤でいじくったりするのも良いですが、入門書等で体系的に勉強されることをお薦めします。


    解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。
    2009年2月26日 13:45
    モデレータ
  •  

    イベントハンドラはどのようなときに使いどんな働きがあるか
    例外とはどのような現象を言うのか、と例外時に起きるスローの意味と働き
    New キーワードを付ける理由と働き、便利な点
    クラスの概念と働き

    まだまだわからない言葉たくさんあります。
    このような言葉はBASICのほかの言語の機能からVB.NETに
    装備されてきたためにそのほかの言語に精通している人にのみ
    理解できるように思います。

    VB6はだいたい分かってきたのですがVB.NETで大幅な変更
    がありましたので大変理解しづらく、勉強がしにくいです。

    VB.NETのヘルプを見るとこのような英語のキーワードが説明の中
    に対して日本語よりも占める割合が多く書かれているため
    その意味と、働きがわかりません。
    とくにVB.NETで出てくる特有の専門用語がことごとく
    わかりません。

    VB 2005などの参考書は持っていますが、結局
    言葉の説明やその中でさらに意味の分からない言葉の英語で
    説明がされているため、理解が困難に感じています。

    特にVB.NETヘルプの中などは全てキーワードの意味を知っている人
    向けに書かれているように印象を持ちました。

    このような基礎的なVB.NETのキーワードの意味が詳しく説明されている
    本で、お勧めの本があれば教えていただければ幸いです。

    VB6ユーザーのためのVB2005という本ももっていますが、もっと
    VB.NETの特徴や、新しくなったもののが一から詳しく平易に説明された本
    は無いでしょうか。

    2009年2月27日 1:55
  • VB136 さん の発言:

    VB6ユーザーのためのVB2005という本ももっていますが、もっと
    VB.NETの特徴や、新しくなったもののが一から詳しく平易に説明された本
    は無いでしょうか。


    何をもって分かりやすい、何をもって簡単であるといったものは主観に基づきます。(人それぞれであるということ)
    そのため、私からどの書籍が良いとかお薦めすることはできません。

    大きな書店などで、自分にとって分かりやすい本を選ぶのが確かなところだと思います。
    通販や取り寄せですると、中身と自分のレベルが合わずに、読まず仕舞いに終わることもあり得ます。


    解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。
    • 回答としてマーク VB136 2009年3月2日 3:43
    2009年2月28日 7:44
    モデレータ