Winforms 用户控制绘图在一台机器上正常,但在另一台机器上不正常。在图形后面绘图?
我有一个刚创建的自定义控件类。 在我工作的开发机器上(运行VS2010的virtualbox来宾Win7 x64),它绘制得非常完美。重新调整尺寸,以及一切 在我的家用机器上,它第一次绘制,然后如果我调整它的大小,除了边缘,我看不到任何变化。更密切地关注工件似乎是指向我的控件绘制在它刚刚绘制的下方,而不是顶部。我不知道会有什么不同Winforms 用户控制绘图在一台机器上正常,但在另一台机器上不正常。在图形后面绘图?,winforms,drawing,controls,Winforms,Drawing,Controls,我有一个刚创建的自定义控件类。 在我工作的开发机器上(运行VS2010的virtualbox来宾Win7 x64),它绘制得非常完美。重新调整尺寸,以及一切 在我的家用机器上,它第一次绘制,然后如果我调整它的大小,除了边缘,我看不到任何变化。更密切地关注工件似乎是指向我的控件绘制在它刚刚绘制的下方,而不是顶部。我不知道会有什么不同 Imports System.Drawing Public Class NetworkDiagram Inherits Windows.Forms.User
Imports System.Drawing
Public Class NetworkDiagram
Inherits Windows.Forms.UserControl
Sub New()
End Sub
Sub DrawNetwork(e As System.Windows.Forms.PaintEventArgs)
Dim pen1 As New Pen(Color.Blue, 1.0F)
' Draw a basic smiley face
e.Graphics.FillEllipse(Brushes.Yellow, 0, 0, Me.Width - 1, Me.Height - 1) ' Face
e.Graphics.FillEllipse(Brushes.Black, Me.Width / 4.0F, Me.Height / 4.0F, Me.Width / 6.0F, Me.Height / 6.0F) ' Left Eye
e.Graphics.FillEllipse(Brushes.Black, Me.Width - (Me.Width / 3.0F) - 10, (Me.Height / 4.0F), (Me.Width / 6.0F), (Me.Height / 6.0F)) ' Right Eye
e.Graphics.DrawArc(Pens.Black, (Me.Width / 4.0F), (Me.Height / 2.0F), (Me.Width / 2.0F), (Me.Height / 4.0F), 0, 180) ' Mouth
pen1.Dispose()
End Sub
Protected Overrides Sub OnPaint(e As System.Windows.Forms.PaintEventArgs)
DrawNetwork(e)
MyBase.OnPaint(e)
End Sub
End Class
UserControl是一个容器控件,类似于Panel。它们通常没有自己的内容,只是充当其他控件的容器。他们的行为为此进行了优化,避免了过度绘制,因为这会在调整大小操作期间导致大量闪烁。但在这种情况下,你真的很在乎这幅画。这很好,你只需要撤销优化。使您的构造函数如下所示:
Sub New()
Me.InitializeComponent()
Me.SetStyle(ControlStyles.ResizeRedraw, True)
End Sub
我保留了InitializeComponent()调用,因为它通常在那里。SetStyle()调用很重要