投稿者 るきお  (社会人) 投稿日時 2009/10/28 21:34:32
こんにちは。
私であれ他の方であれ名指しで回答を要望することは今後しないようにお願いします。

たくさんの知識・経験がある方々にもこの掲示板で発言していただいており、
そのようなアドバイスをもらう機会を少なくすることはhoriさんにとっても損だと思います。

今回の件

>こうした機能を実装することは、まだ初級者レベルでは敷居が高いのでしょうか?
はい。そう思います。

>(グラフィックソフトにも同じような機能は付属しているので、ライブラリとして存在しているものと
>思いこんでいたのですが、今のところはないのですね。)
VB標準(.NET標準)ではなかったと思います。
市販のものやフリーウェア・シェアウェア等調べればあるかもしれません。


PictureBoxの右端のサイズだけ変えられるサンプルを作ってみましたので参考にしてください。
    
Public Class Form1

    Private IsSizable As Boolean    'サイズ変更可能状態か? 
    Private IsSizing As Boolean     'サイズ変更中か? 

    Private Sub PictureBox1_MouseDown(ByVal sender As ObjectByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseDown

        'サイズ変更可能状態でマウスを押下した場合、サイズ変更中にする。 
        If IsSizable Then
            IsSizing = True
        End If

    End Sub

    Private Sub PictureBox1_MouseLeave(ByVal sender As ObjectByVal e As System.EventArgs) Handles PictureBox1.MouseLeave

        'マウスがPictureBox外に出たときはカーソルを通常にして、フラグをすべてリセットする。 
        Me.Cursor = Cursors.Default
        IsSizable = False
        IsSizing = False

    End Sub

    Private Sub PictureBox1_MouseMove(ByVal sender As System.ObjectByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseMove

        If IsSizing Then
            'サイズ変更中ならサイズを変更する 
            PictureBox1.Width = e.X
        Else
            'サイズ変更中でないならサイズ変更可能状態か判断しマウスの形状を変更する。 
            ArrowMouse(sender, e.X, e.Y)
        End If

    End Sub

    ''' <summary> 
    ''' サイズ変更可能状態か判断し、必要に応じてマウスの形状を変更する。 
    ''' MouseLeaveイベントでもマウスの状態を変更しているのに留意のこと。 
    ''' </summary> 
    Private Sub ArrowMouse(ByVal cnt As Control, ByVal x As IntegerByVal y As Integer)

        If x >= (cnt.Width - 5) Then
            'コントロールの右端から内側に5ピクセル内にマウスがあるときサイズ変更可能 
            Me.Cursor = Cursors.SizeWE
            IsSizable = True
        Else
            'それ以外のときサイズ変更不可。 
            Me.Cursor = Cursors.Default
            IsSizable = False
        End If

    End Sub

    Private Sub PictureBox1_MouseUp(ByVal sender As ObjectByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseUp

        IsSizing = False

    End Sub

    Private Sub Form1_Load(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles MyBase.Load

        PictureBox1.Image = Image.FromFile("C:\windows\winnt.bmp")
        PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage

    End Sub
End Class



まだまだいろいろ改造する必要がありますが、たたき台として使用できるレベルと思います。
これをカスタムコントロールにでもすれば将来楽だと思います。