Hallo.
habe mir eine Klasse von Forms.Label abgeleitet. Dort zeichne ich im Paint-Ereignis den Hintergrund neu (in de Art eines Fortschrittsbalkens). Klappt ganz gut, denke ich.
Nun möchte ich den eigentlichen Text des Labels darüber zeichnen, kann aber irgendwie nicht die Umwandlung von Label.ForeColor nach Brush, was die Textfarbe sein soll.
Hier der Code im PaintEvent des Labels:
Private Sub ProgressLabel_Paint(ByVal sender As Object, ByVal e As _
System.Windows.Forms.PaintEventArgs) Handles Me.Paint
Try
Dim Rect As Drawing.Rectangle
Dim Radius As Single = mRadius
If Me.Height <= Me.Width Then
If Radius > (Me.Height - 2 * RAND) / 2 Then Radius = CSng(( _
Me.Height - 2 * RAND) / 2) - 1
Else
If Radius > (Me.Width - 2 * RAND) / 2 Then Radius = CSng(( _
Me.Width - 2 * RAND) / 2) - 1
End If
With Me.Bounds
'Rand
Rect = New Drawing.Rectangle(0, 0, .Width - RAND, .Height - _
RAND)
DrawRoundedRectangle(e.Graphics, Rect, Radius, mBorderColor, _
New LinearGradientBrush(Rect, mBackColor1, mBackColor2, _
LinearGradientMode.Vertical))
'Füllung
Dim Val As Single = CSng(mValue / mMaximum)
Dim W As Integer = CInt(.Width * Val) - 1
If W > 0 Then
Rect = New Drawing.Rectangle(0, 0, W, .Height - RAND)
DrawRoundedRectangle(e.Graphics, Rect, Radius, _
mBorderColor, _
New LinearGradientBrush(Rect, mForeColor1, mForeColor2, _
LinearGradientMode.Vertical))
End If
End With
If Me.Text <> "" Then
Dim Rect2 As System.Drawing.Size = TextRenderer.MeasureText( _
Me.Text, Me.Font)
Dim x As Integer = CInt((Me.Width - Rect2.Width) / 2)
Dim y As Integer = CInt((Me.Height - Rect2.Height) / 2)
'Text zeichnen
e.Graphics.DrawString(Me.Text, Me.Font, Brushes.Black, x, y)
End If
Catch
End Try
End Sub Wie könnte ich das so lösen, das die Farbe nicht Brushes.Black sondern die bereits im Steuerelement angegebene ForeColor ist?
Gibt es eine Möglichkeit, dass der Text immer sichtbar ist, egal welche Hintergrundfarbe(n)?
Schü |