[phpBB Debug] PHP Notice: in file /viewtopic.php on line 1506: Undefined offset: 18902
[phpBB Debug] PHP Notice: in file /viewtopic.php on line 1506: Undefined offset: 18902
[phpBB Debug] PHP Notice: in file /includes/functions.php on line 4284: Cannot modify header information - headers already sent by (output started at /includes/functions.php:3493)
[phpBB Debug] PHP Notice: in file /includes/functions.php on line 4286: Cannot modify header information - headers already sent by (output started at /includes/functions.php:3493)
[phpBB Debug] PHP Notice: in file /includes/functions.php on line 4287: Cannot modify header information - headers already sent by (output started at /includes/functions.php:3493)
[phpBB Debug] PHP Notice: in file /includes/functions.php on line 4288: Cannot modify header information - headers already sent by (output started at /includes/functions.php:3493)
Конференция VBStreets • Просмотр темы — [RESOLVED] Прозрачный фон у Label'ов - как его сделать?
Страница 1 из 1

[RESOLVED] Прозрачный фон у Label'ов - как его сделать?

СообщениеДобавлено: 22.09.2008 (Пн) 17:07
NeverGone
Возможно ли в VB.net 2005 поставить прозрачный фон у лэйблов? Ставлю BackColor = Transparent — фон черный...
Если пишу в коде:
Код: Выделить всё
Label.BackColor = System.Drawing.Color.Empty
— тоже черный... Если
Код: Выделить всё
Label.BackColor = System.Drawing.Color.Transparent
фон становится белым... Где-то тут писали про свойство TransparencyKey — его я не нашел... Как получить прозрачный фон? В vb6 было свойство BackStyle, а здесь?

Re: Прозрачный фон у Label'ов - как его сделать?

СообщениеДобавлено: 22.09.2008 (Пн) 20:29
NeverGone
Нашел следующее:
zeny писал(а):Вот нашел, может кому-нибудь понадобится:
Код: Выделить всё
Public Class TransparentLabel
  Inherits Control
  Protected Overrides Sub OnPaintBackground(ByVal e As PaintEventArgs)
    'do nothing
  End Sub
  Private bPaintOnce As Boolean = False 'flag to prevent infinite loop
  Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)
    If (bPaintOnce = False) Then
      bPaintOnce = True
      Me.Visible = False
      Me.Parent.Invalidate(Me.Bounds)  'more efficient than me.Parent.Refresh
      Me.Parent.Update()    'force parent to redraw only invalidated regions
      Me.Visible = True
      Return
    Else
      bPaintOnce = False
      Dim g As Graphics = e.Graphics
      Dim myBrush As SolidBrush = New SolidBrush(Me.ForeColor)
      g.DrawString(Me.Text, Me.Font, myBrush, 1, 1)
      g.Dispose()
    End If
  End Sub
End Class

ну и потом соответственно:
'В form_load или после InitializeComponent
Dim myLabel As New TransparentLabel
Me.Controls.Add(myLabel)

myLabel.BringToFront
myLabel.Left=1
myLabel.Top=1
...

Однако с этим вываливается ManifestException (ну или как-то так).
Ай нид хелп... :oops:

Re: Прозрачный фон у Label'ов - как его сделать?

СообщениеДобавлено: 23.09.2008 (Вт) 11:44
dr.MIG
Странно, у меня в VS2005 код Label1.BackColor = Color.Transparent делает Label прозрачным, задание BackColor в дизайнее форм в Transparent (вкладка Web) работает аналогично.

Re: Прозрачный фон у Label'ов - как его сделать?

СообщениеДобавлено: 24.09.2008 (Ср) 23:01
NeverGone
dr.MIG писал(а):Странно, у меня в VS2005 код Label1.BackColor = Color.Transparent делает Label прозрачным, задание BackColor в дизайнее форм в Transparent (вкладка Web) работает аналогично.

Прозрачным - в смысле задается цвет, соответствующий BackColor формы? Поставил VisualStudio 2008 - то же самое. Ради эксперимента поставил на форме BackColor серым - Label немедленно принял его цвет :D А у меня под лэйблом картинка с градиентом, и хотелось бы, чтобы градиент все-таки был виден.
Можно ли как-то это реализовать?

Re: Прозрачный фон у Label'ов - как его сделать?

СообщениеДобавлено: 25.09.2008 (Чт) 18:07
dr.MIG
А... Понятно.
Так может отказаться от Label в пользу:
Код: Выделить всё
    Private Sub PictureBox1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PictureBox1.Paint
        e.Graphics.DrawString("Label1", Me.Font, New SolidBrush(Me.ForeColor), x, y) 'замени x и y на свои значения
    End Sub

Re: Прозрачный фон у Label'ов - как его сделать?

СообщениеДобавлено: 25.09.2008 (Чт) 21:15
NeverGone
dr.MIG писал(а):А... Понятно.
Так может отказаться от Label в пользу:
Код: Выделить всё
    Private Sub PictureBox1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PictureBox1.Paint
        e.Graphics.DrawString("Label1", Me.Font, New SolidBrush(Me.ForeColor), x, y) 'замени x и y на свои значения
    End Sub

Отлично. Вот только:
1) как на нем обновить текст?
Код: Выделить всё
Call PictureBox1_Paint (???)
Что написать в скобках?
2) можно ли сделать выравнивание текста по правому краю?

EDIT:
Хакер писал(а):
Подпись NeverGon'а писал(а):Пожалуйста, верните на счетчик мои 16 сообщений
Такие просьбы бессмыслено помещать в подписи, и при этом постить только в разделах, которые я не читаю регулярно.
Такие просьбы надо слать мне в личку.
Спасибо.

Re: Прозрачный фон у Label'ов - как его сделать?

СообщениеДобавлено: 08.10.2008 (Ср) 16:54
Хакер
Подпись NeverGon'а писал(а):Пожалуйста, верните на счетчик мои 16 сообщений


Такие просьбы бессмыслено помещать в подписи, и при этом постить только в разделах, которые я не читаю регулярно.

Такие просьбы надо слать мне в личку.

Re: Прозрачный фон у Label'ов - как его сделать?

СообщениеДобавлено: 02.06.2009 (Вт) 20:17
boober
а вот на мой взгляд данный фреймворк не поддерживает прозрачные цвета. ибо я на этой почве немало ночей загубил и никак.

Re: Прозрачный фон у Label'ов - как его сделать?

СообщениеДобавлено: 02.06.2009 (Вт) 20:20
Williams
Вот тут человек рассказывает как эмулировать прозрачный Label. Если поискать, можно найти еще.

Re: Прозрачный фон у Label'ов - как его сделать?

СообщениеДобавлено: 01.02.2010 (Пн) 21:01
NeverGone
Если кому-то еще интересно…
Код: Выделить всё
Private Sub DrawLabelOnPicture(ByVal text As String, ByVal color As Color, ByVal target As PictureBox, ByVal grx As Graphics)
    ' For alignment center
    Dim sf As New StringFormat()
    sf.Alignment = StringAlignment.Center
    sf.LineAlignment = StringAlignment.Center
    'Draw String centered on picture
    Dim drawBounds As Rectangle = target.Bounds
    drawBounds.X -= target.Location.X - 1
    drawBounds.Y = 1
    grx.DrawString(text, New Font("Tahoma", 8, FontStyle.Regular), New SolidBrush(color), drawBounds, sf)
End Sub
Private Sub imgLogo_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles imgLogo.Paint
    DrawLabelOnPicture("VBStreets Forever", Color.Black, imgSettings_main, e.Graphics)
End Sub

Re: [RESOLVED] Прозрачный фон у Label'ов - как его сделать?

СообщениеДобавлено: 16.04.2015 (Чт) 14:17
Stinger
Может быть что бы черного не было альфу какую нить как в фотошопе следует поискать?