2016-07-26 6 views
0

Ich versuche ein Etikett um 90 Grad in Vb-Netz zu drehen und kann es nicht funktionieren. Mein Code ist wie folgt. Jede Hilfe wäre willkommen.Wie drehe ich ein Etikett in Vb-Netz?


Private Sub Label1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint 

    Dim sf As New StringFormat 

    sf.Alignment = StringAlignment.Center 

    sf.LineAlignment = StringAlignment.Center 

    MetroLabel50.Text = "" 

    e.Graphics.TranslateTransform(MetroLabel50.ClientSize.Width, MetroLabel50.ClientSize.Height) 

    e.Graphics.RotateTransform(90) 

    e.Graphics.DrawString("Label", MetroLabel50.Font, Brushes.Black, RectangleF.op_Implicit(MetroLabel50.ClientRectangle), sf) 

    e.Graphics.ResetTransform() 

End Sub 
+0

bewegen e.Graphics .RotateTransform (90) nach DrawString? – Fredou

+0

Funktioniert immer noch nicht Ich habe Angst. Wenn ich das vorher nicht benutzt habe, muss ich es neben 'handle me.paint' nennen und macht es einen Unterschied, dass ich das Label bereits angedockt habe? – user6641274

+0

ok, behalte die Zeile wo du sie hattest, antworte unter – Fredou

Antwort

2

so nach ein wenig Kontrolle, diese Linie

e.Graphics.TranslateTransform(MetroLabel50.ClientSize.Width, MetroLabel50.ClientSize.Height) 

sollte

e.Graphics.TranslateTransform(csng(MetroLabel50.ClientSize.Width/2), csng(MetroLabel50.ClientSize.Height/2)) 

haben Sie es setzen auch Handles Me.Paint in der Mitte

sein ändern, indem Handles label1.Paint

Beispielcode;

Schritt 1, neues Projekt
Schritt 2, ein Etikett in der Mitte der 3-Schritt-Form
fällt, dass Code setzen

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
    Label1.AutoSize = False 
    Label1.Text = "" 
    Label1.Width = 75 
    Label1.Height = 75 
    Label1.Refresh() 
End Sub 

Private Sub Label1_Paint(sender As Object, e As PaintEventArgs) Handles Label1.Paint 
    e.Graphics.TranslateTransform(CSng(Label1.Width/2), CSng(Label1.Height/2)) 
    e.Graphics.RotateTransform(90) 
    e.Graphics.DrawString("Hello", Label1.Font, Brushes.Black, New Point(0, 0)) 
    e.Graphics.ResetTransform() 
End Sub 

Schritt 4 führt die Anwendung

+0

Immer noch nirgendwohin. Ich habe Testlabel Text eingefügt und es nicht einmal auf Last, so dass ich nehme die Sonne hat noch nicht begonnen – user6641274

+0

@ user6641274 stellen Sie sicher, Autosize ist falsch, Clearing das Etikett wird es sehr klein machen – Fredou

+0

manuell getippt "test" in der Eigenschaften Textfenster, wenn die Anwendung lädt Ich sehe immer noch das Wort "test". Würde das nicht bedeuten, dass die Zeile metrolabel50.text = "" nicht erfolgreich war und dass das Sub gerade nicht gestartet wurde? – user6641274