我试图根据拖动面板一角绘制的自定义形状来调整表单的大小。我有一个代码,如果它在主窗体中绘制,效果很好,但如果我试图在面板的角落绘制它不起作用,我无法调整表单的大小。代码经过优化,可以在表单中绘制,有人可以帮助我并将其更新为在面板中工作吗?
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
看起来像这样:
答案 0 :(得分:0)
我设法通过使用GDI构建我自己的自定义控件来解决问题,将形状绘制为独立控件,而不是将其绘制到已构建的控件,例如面板。