从绘制的面板形状调整窗体大小 - VB.NET

时间:2016-09-12 13:35:24

标签: vb.net resize draw shape

我试图根据拖动面板一角绘制的自定义形状来调整表单的大小。我有一个代码,如果它在主窗体中绘制,效果很好,但如果我试图在面板的角落绘制它不起作用,我无法调整表单的大小。代码经过优化,可以在表单中绘制,有人可以帮助我并将其更新为在面板中工作吗?

    Protected Overrides Sub WndProc(ByRef m As Message)
    MyBase.WndProc(m)
    If m.Msg = &H84 Then
        Dim pos = Me.PointToClient(New System.Drawing.Point(m.LParam.ToInt32() And &HFFFF, m.LParam.ToInt32() >> 16))
        If pos.X >= Me.Width - grab AndAlso pos.Y >= Me.Height - grab Then
            m.Result = New IntPtr(17)
        End If
    End If
End Sub
Private Const grab As Integer = 14

Protected Overrides Sub OnPaint(e As PaintEventArgs)
    MyBase.OnPaint(e)
    Dim rc = New System.Drawing.Rectangle(Me.Width - grab, Me.Height - grab, grab, grab)
    ControlPaint.DrawSizeGrip(e.Graphics, System.Drawing.Color.FromArgb(250, 250, 250), rc)
End Sub

看起来像这样:

Here

1 个答案:

答案 0 :(得分:0)

我设法通过使用GDI构建我自己的自定义控件来解决问题,将形状绘制为独立控件,而不是将其绘制到已构建的控件,例如面板。