none
重ねた画像(PictureBox)の拡大・縮小 RRS feed

  • 質問

  • Visual Studio .NET   Visual Basic  共に使うのは初めてのプログラミング初心者なのですが・・・
    2つのPictureBoxをクリックすることでクリックした方を拡大、もう一度クリックすることで縮小(右クリックで拡大、左クリックで縮小等でも可)できるようにできる限り簡単なプログラムでしたいのですが・・・
    現在、2つのPictureBoxを作る所まではできているのですが、画像の拡大・縮小のさせ方がよく分かりません
    PictureBoxを作った時の宣言を参考に
    Private Sub PictureBox2_Click(ByVal sender AsSystem.Object, ByVal e As System.EventArgs) HandlesPictureBox2.Click
         If MouseButtons.Left Then
                PictureBox2.Size = NewSystem.Drawing.Size(1280, 1024)
            ElseIf MouseButtons.Right Then
                PictureBox2.Size = NewSystem.Drawing.Size(300, 250)
            End If
    等で試してみたのですが、コレだと右でも左でもクリックすると拡大してしまい縮小はできませんでた。
    また、ただサイズ変更しているだけなので重なる画像の下側をクリックした場合拡大した下の画像の上に重ねた画像の上側が被って見えてしまいます。これも被らなくしたいのですが、どうすればいいでしょうか?
    できれば例分などがあると助かります。 ご教授宜しくお願いします。

    • 編集済み NOIR62 2010年1月14日 14:29 間違いがあった
    2010年1月13日 14:06

回答

  • > コレだと右でも左でもクリックすると拡大してしまい縮小はできませんでた。

    MouseDown イベントとか使えばいいです。
    パラメータ変数 e の Button プロパティでどのボタンがクリックされたか判定できます。

    Private Sub PictureBox2_MouseDown _
            (ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) _
            Handles PictureBox2.MouseDown
    
        If e.Button = MouseButtons.Left Then
            PictureBox2.Size = New System.Drawing.Size(800, 600)
        ElseIf MouseButtons.Right Then
            PictureBox2.Size = New System.Drawing.Size(90, 75)
        End If
    
    End Sub
    
    2010年1月13日 14:44
    モデレータ
  • ひらぽんさんに補足します。最前面に持ってくるにはBringToFront()メソッドが使用できます。


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://blogs.wankuma.com/trapemiya/
    2010年1月13日 14:53
    モデレータ
  • できれば例分などがあると助かります。 ご教授宜しくお願いします。

    全部教えるのも何なので・・・
    DOBON さんのところに使えるサンプルが沢山あります。色々探して試してみるといいでしょう。

    http://dobon.net/vb/dotnet/index.html
    2010年1月13日 14:53
    モデレータ

すべての返信

  • > コレだと右でも左でもクリックすると拡大してしまい縮小はできませんでた。

    MouseDown イベントとか使えばいいです。
    パラメータ変数 e の Button プロパティでどのボタンがクリックされたか判定できます。

    Private Sub PictureBox2_MouseDown _
            (ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) _
            Handles PictureBox2.MouseDown
    
        If e.Button = MouseButtons.Left Then
            PictureBox2.Size = New System.Drawing.Size(800, 600)
        ElseIf MouseButtons.Right Then
            PictureBox2.Size = New System.Drawing.Size(90, 75)
        End If
    
    End Sub
    
    2010年1月13日 14:44
    モデレータ
  • できれば例分などがあると助かります。 ご教授宜しくお願いします。

    全部教えるのも何なので・・・
    DOBON さんのところに使えるサンプルが沢山あります。色々探して試してみるといいでしょう。

    http://dobon.net/vb/dotnet/index.html
    2010年1月13日 14:53
    モデレータ
  • ひらぽんさんに補足します。最前面に持ってくるにはBringToFront()メソッドが使用できます。


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://blogs.wankuma.com/trapemiya/
    2010年1月13日 14:53
    モデレータ
  • ひらぽんさんtrapemiyaさん回答ありがとうございます。
    これでなんとか組めそうです。
    2010年1月14日 14:26
  • こんにちは、フォーラムオペレーターの高橋春樹です。

    ひらぽんさん、trapemiyaさん
    いつも大変お世話になってます。

    NOIR62さん
    MSDNフォーラムのご利用ありがとうございます。
    ひらぽんさんとtrapemiyaさんからのアドバイスが、問題解決に繋がったようなので、
    勝手ながら、こちらで回答マークを付けさせてもらいました。
    また何か疑問点がありましたら、新たに投稿してもらいたいと思います。

    今後ともMSDNフォーラムをよろしくお願いします(^-^)


    マイクロソフト株式会社 フォーラム オペレーター 高橋春樹
    2010年1月21日 5:48