- 日時: 2009/12/26 21:08
- 名前: 花ちゃん
- ***********************************************************************************
* カテゴリー:[コントロール共通][マウス][] * * キーワード:PictureBox,移動,サイズ変更,幅を変更, * *********************************************************************************** 記事No : 7164 投稿日 : 2008/03/08(Sat) 08:14 元質問 : ゆうき
マウスのドラッグで、ペイントのようにPictureBoxのサイズを変更したいのですが、 http://hanatyan.sakura.ne.jp/samplepic/vb8_239.htm を参考に、幅を変更するのは実装できました。
しかし、たてを別のラベルで同じようにやろうとすると、ラベルをドラッグしたときに、 PictureBoxがどこかへ行ってしまいます
----------------------------------------------------------------------------------- 回答者 : 花ちゃん ----------------------------------------------------------------------------------- ペイントの白いキャンパスの部分のようにサイズ変更ができます。 サンプルですので2ヶ所しか設定しておりませんので、PictureBox 上にマウスが ある場合だけ、Label を表示するとか工夫してください。 又、http://hanatyan.sakura.ne.jp/samplepic/vb6_151.htm のような方法もあります。
Public Class Form1 Private Posx1 As Integer Private Posy2 As Integer
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles MyBase.Load With Label1 .Size = New Size(4, 4) .Location = New Point(148, 60) .AutoSize = False .Text = "" .BackColor = Color.Black .Cursor = Cursors.SizeWE End With With Label2 .Size = New Size(4, 4) .Location = New Point(98, 108) .AutoSize = False .Text = "" .BackColor = Color.Black .Cursor = Cursors.SizeNS End With
With PictureBox1 .Size = New Size(100, 100) .Location = New Point(50, 10) .BackColor = Color.White End With End Sub
Private Sub Label1_MouseDown(ByVal sender As Object, ByVal e As _ System.Windows.Forms.MouseEventArgs) Handles Label1.MouseDown If e.Button = System.Windows.Forms.MouseButtons.Left Then Posx1 = e.X End If End Sub
Private Sub Label1_MouseMove(ByVal sender As Object, ByVal e As _ System.Windows.Forms.MouseEventArgs) Handles Label1.MouseMove If e.Button = System.Windows.Forms.MouseButtons.Left Then Dim X1 As Integer = Posx1 - e.X Label1.Left -= X1 Label2.Left = (PictureBox1.Width \ 2) + PictureBox1.Left PictureBox1.Width -= X1 Me.Refresh() End If End Sub
Private Sub Label2_MouseDown(ByVal sender As Object, ByVal e As _ System.Windows.Forms.MouseEventArgs) Handles Label2.MouseDown If e.Button = System.Windows.Forms.MouseButtons.Left Then Posy2 = e.Y End If End Sub
Private Sub Label2_MouseMove(ByVal sender As Object, ByVal e As _ System.Windows.Forms.MouseEventArgs) Handles Label2.MouseMove If e.Button = System.Windows.Forms.MouseButtons.Left Then Dim Y2 As Integer = Posy2 - e.Y Label2.Top -= Y2 Label1.Top = (PictureBox1.Height \ 2) + PictureBox1.Top PictureBox1.Height -= Y2 Me.Refresh() End If End Sub End Class
上記実行図 http://hanatyan.sakura.ne.jp/samplepic/vb8_239.htm
|