2011-08-06 53 views
0

我有一個自定義控件類,我只是做。 在我的開發機器上(virtualbox guest Win7 x64運行VS2010),它完美地繪製出來。關於重新規模,和一切。用戶控制圖在一臺機器上可以正常工作,但不是另一臺機器。繪製背後的圖形?

在我的家用機器上,它第一次繪製,然後如果我調整它的大小,除了邊緣以外沒有任何變化。仔細關注這些工件似乎指向我的控制圖,而不是在頂部繪製它。我不知道可能會有什麼不同。

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 

回答

1

UserControl是一個容器控件,如Panel。他們通常沒有自己的內容,只是作爲其他控件的容器。他們的行爲已經過優化,避免了過度的繪畫,因爲在調整大小操作過程中會導致大量閃爍。但在這種情況下,你真的在​​乎這幅畫。這很好,你只需要撤消優化。讓你的構造函數看起來像這樣:

Sub New() 
    Me.InitializeComponent() 
    Me.SetStyle(ControlStyles.ResizeRedraw, True) 
End Sub 

我離開了InitializeComponent()調用,因爲它通常在那裏。 SetStyle()調用是重要的。

相關問題