Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Winforms 用户控制绘图在一台机器上正常,但在另一台机器上不正常。在图形后面绘图?_Winforms_Drawing_Controls - Fatal编程技术网

Winforms 用户控制绘图在一台机器上正常,但在另一台机器上不正常。在图形后面绘图?

Winforms 用户控制绘图在一台机器上正常,但在另一台机器上不正常。在图形后面绘图?,winforms,drawing,controls,Winforms,Drawing,Controls,我有一个刚创建的自定义控件类。 在我工作的开发机器上(运行VS2010的virtualbox来宾Win7 x64),它绘制得非常完美。重新调整尺寸,以及一切 在我的家用机器上,它第一次绘制,然后如果我调整它的大小,除了边缘,我看不到任何变化。更密切地关注工件似乎是指向我的控件绘制在它刚刚绘制的下方,而不是顶部。我不知道会有什么不同 Imports System.Drawing Public Class NetworkDiagram Inherits Windows.Forms.User

我有一个刚创建的自定义控件类。 在我工作的开发机器上(运行VS2010的virtualbox来宾Win7 x64),它绘制得非常完美。重新调整尺寸,以及一切

在我的家用机器上,它第一次绘制,然后如果我调整它的大小,除了边缘,我看不到任何变化。更密切地关注工件似乎是指向我的控件绘制在它刚刚绘制的下方,而不是顶部。我不知道会有什么不同

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()调用很重要