在Krypton面板上画线?

时间:2014-01-10 17:14:16

标签: .net vb.net gdi+ paint krypton-toolkit

我想在Krypton Toolkit Panel控件的中间画一条线但是没有绘制线。

我在这里尝试了两个灵魂:draw line on panel not showing up

而且:

Public Class Form1

Private Sub KryptonPanel1_Paint(sender As Object, e As PaintEventArgs) _
Handles KryptonPanel1.Paint

    Using p As New Pen(Brushes.YellowGreen)
        e.Graphics.DrawLine(p, sender.Width \ 2, 0, sender.Width \ 2, sender.Bottom)
    End Using

End Sub

End Class

1 个答案:

答案 0 :(得分:1)

此时,我认为可以确定Krypton Toolkit Panel没有控件样式UserPaint

  

“如果为true,则控件会自行绘制而不是操作系统。如果为false,则不会引发Paint事件。此样式仅适用于从Control派生的类。” - MSDN

如果可能,您可以尝试以下选项之一。

首先创建一个源自Krypton Toolkit Panel的自定义控件。

选项1

在构造函数中追加标志。 (这可能会破坏基类中的自定义绘图)

Public Sub New()
    MyBase.SetStyle(ControlStyles.UserPaint, True)
End Sub

选项2

覆盖WndProc

Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
    Try
        If ((m.Msg = WM_PAINT) OrElse (m.Msg = WM_ERASEBKGND)) Then
            Using g As Graphics = Me.CreateGraphics()
                Me.OnPaint(New PaintEventArgs(g, Me.ClientRectangle))
            End Using
        End If
    Catch ex As Exception
    Finally
        MyBase.WndProc(m)
    End Try
End Sub

Const WM_PAINT As Integer = 15
Const WM_ERASEBKGND As Integer = 20