2010-10-07 7 views
1

Je suis en mesure de redimensionner le d'utiliser le code ci-dessous mais il redimensionne vers le côté droit, à partir du coin en bas à droiteredimensionner la forme sans marge

je veux modifier le code afin que l'utilisateur puisse la taille re forme de coin en bas à gauche .

également la plupart des solutions données sur ce site sont basées sur WndProc/WM_NCLBUTTONDOWN et je ne l'utilise pas parce que mon formulaire a beaucoup de contrôles donc ça scintille très mal.

Private Shared frmLastWidth As Integer = 0 
    Private Shared frmLastHeight As Integer = 0 
    Private Shared frmWidth As Integer 
    Private Shared frmHeight As Integer 
    Private Shared frmIsResizing As Boolean = False 
    Private frmRectangle As New System.Drawing.Rectangle() 

    Private Sub ResizeMe_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles ResizeMe.MouseUp 
    If frmIsResizing Then 


     frmRectangle.Location = New System.Drawing.Point(Me.Left, Me.Top) 



     frmRectangle.Size = New System.Drawing.Size(frmWidth, frmHeight) 
     ControlPaint.DrawReversibleFrame(frmRectangle, Color.Black, System.Windows.Forms.FrameStyle.Dashed) 
     Me.Width = frmWidth 
     Me.Height = frmHeight 
     frmIsResizing = False 

    End If 





    End Sub 

    Private Sub ResizeMe_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles ResizeMe.MouseDown 

    frmRectangle.Location = New System.Drawing.Point(Me.Left, Me.Top) 
    frmRectangle.Size = New System.Drawing.Size(frmWidth, frmHeight) 
    ControlPaint.DrawReversibleFrame(frmRectangle, Color.Black, System.Windows.Forms.FrameStyle.Dashed) 

    End Sub 



    Private Sub ResizeMe_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles ResizeMe.MouseMove 




    If e.Button = Windows.Forms.MouseButtons.Left Then 

'Me.ResizeRedraw = false 
    Dim sizeageX As Integer = MousePosition.X - Me.Location.X 
    Dim sizeageY As Integer = MousePosition.Y - Me.Location.Y 

    ' Use this to restrict Width 
    If sizeageX < Me.MinimumSize.Width Then 
     sizeageX = Me.MinimumSize.Width 
    End If 
    ' Use this to restrict Height 
    If sizeageY < Me.MinimumSize.Height Then 
     sizeageY = Me.MinimumSize.Height 
    End If 
    frmWidth = sizeageX 
    frmHeight = sizeageY 

    If frmLastWidth = 0 Then 
     frmLastWidth = frmWidth 
    End If 
    If frmLastHeight = 0 Then 
     frmLastHeight = frmHeight 
    End If 
    If frmIsResizing Then 

     frmRectangle.Location = New System.Drawing.Point(Me.Left, Me.Top) 
     frmRectangle.Size = New System.Drawing.Size(frmLastWidth, frmLastHeight) 
    End If 

    frmIsResizing = True 

    ControlPaint.DrawReversibleFrame(frmRectangle, Color.Black, System.Windows.Forms.FrameStyle.Dashed) 
    frmLastWidth = frmWidth 
    frmLastHeight = frmHeight 


    frmRectangle.Location = New System.Drawing.Point(Me.Left, Me.Top) 
    frmRectangle.Size = New System.Drawing.Size(frmWidth, frmHeight) 
    ControlPaint.DrawReversibleFrame(frmRectangle, Color.Black, System.Windows.Forms.FrameStyle.Dashed) 
    End Sub 

    Private Sub ResizeRight(ByVal e As System.Windows.Forms.MouseEventArgs) 
    'Me.ResizeRedraw = false 

    Dim sizeageX As Integer = (MousePosition.X + Me.Width) - Me.Location.X 
    Dim sizeageY As Integer = (MousePosition.Y + Me.Height) - Me.Location.Y 



    ' Use this to restrict Width 
    If sizeageX < Me.MinimumSize.Width Then 
     sizeageX = Me.MinimumSize.Width 
    End If 
    ' Use this to restrict Height 
    If sizeageY < Me.MinimumSize.Height Then 
     sizeageY = Me.MinimumSize.Height 
    End If 
    frmWidth = sizeageX 
    frmHeight = sizeageY 

    If frmLastWidth = 0 Then 
     frmLastWidth = frmWidth 
    End If 
    If frmLastHeight = 0 Then 
     frmLastHeight = frmHeight 
    End If 
    If frmIsResizing Then 

     frmRectangle.Location = New System.Drawing.Point(Me.Left, Me.Top) 
     frmRectangle.Size = New System.Drawing.Size(frmLastWidth, frmLastHeight) 
    End If 

    frmIsResizing = True 

    ControlPaint.DrawReversibleFrame(frmRectangle, Color.Black, System.Windows.Forms.FrameStyle.Dashed) 
    frmLastWidth = frmWidth 
    frmLastHeight = frmHeight 


    frmRectangle.Location = New System.Drawing.Point(Me.Left, Me.Top) 
    frmRectangle.Size = New System.Drawing.Size(frmWidth, frmHeight) 
    ControlPaint.DrawReversibleFrame(frmRectangle, Color.Black, System.Windows.Forms.FrameStyle.Dashed) 


    End If 


    End Sub 

Mise à jour

i a été en mesure de la taille re forme coin en bas à gauche, mais il montre les lignes pointillées plusieurs fois aussi les lignes pointillées ne limite pas à la hauteur minimale et la largeur de la forme modifié code est

Private Sub ResizeRight(ByVal e As System.Windows.Forms.MouseEventArgs) 
    'Me.ResizeRedraw = false 
    Dim sizeageX As Integer = MousePosition.X + Me.Location.X 
    Dim sizeageY As Integer = MousePosition.Y + Me.Location.Y 

    ' Use this to restrict Width 
    If sizeageX > Me.MinimumSize.Width Then 
     sizeageX = Me.MinimumSize.Width 
    End If 
    ' Use this to restrict Height 
    If sizeageY > Me.MinimumSize.Height Then 
     sizeageY = Me.MinimumSize.Height 
    End If 
    frmWidth = sizeageX - e.X 
    frmHeight = sizeageY - e.Y 


    If frmLastWidth = 0 Then 
     frmLastWidth = frmWidth 
    End If 
    If frmLastHeight = 0 Then 
     frmLastHeight = frmHeight 
    End If 

    If frmIsResizing Then 

     frmRectangle.Location = New System.Drawing.Point(Me.Left + e.X, Me.Top) 
     frmRectangle.Size = New System.Drawing.Size(frmLastWidth, frmLastHeight) 
    End If 

    frmIsResizing = True 

    ControlPaint.DrawReversibleFrame(frmRectangle, Color.Black, System.Windows.Forms.FrameStyle.Dashed) 
    frmLastWidth = frmWidth 
    frmLastHeight = frmHeight 


    frmRectangle.Location = New System.Drawing.Point(Me.Left + e.X, Me.Top) 
    frmRectangle.Size = New System.Drawing.Size(frmWidth, frmHeight) 
    ControlPaint.DrawReversibleFrame(frmRectangle, Color.Black, system.Windows.Forms.FrameStyle.Dashed) 
End Sub 

Répondre

Questions connexes