2009-02-05 2 views
6

Я изо всех сил, чтобы получить свою форму, чтобы иметь прозрачный фон в vb.netКак я могу установить форму, чтобы иметь прозрачный фон

В настоящее время в виде нового я установил

Me.SetStyle(ControlStyles.SupportsTransparentBackColor, true) 

Но все-таки форма отображается как имеющая серый цвет по умолчанию

Может ли кто-нибудь помочь?

EDIT: мне нужны элементы управления на форме, чтобы быть видимыми, так что я не думаю, что установка непрозрачность до 0 будет работать

EDIT: Я попробовал решение ключевой прозрачности, но она не работает. У меня круговой образ с черным фоном. OnPaint Я установил ключ прозрачности в пиксель img на 0,0, это оставляет меня с круговым изображением (которое я хочу). Он скрывает черный фон, но я все еще остаюсь с серым прямоугольником по умолчанию в форме.

ниже код у меня есть -

Public Sub New() 

    Me.SetStyle(ControlStyles.SupportsTransparentBackColor, True) 
    Me.BackColor = Color.Transparent 
    ' This call is required by the Windows Form Designer. 
    InitializeComponent() 

    ' Add any initialization after the InitializeComponent() call. 
    Me.Timer1.Start() 
End Sub 

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

    Dim img As Bitmap = CType(Me.BackgroundImage, Bitmap) 

    img.MakeTransparent(img.GetPixel(2, 2)) 
    Me.TransparencyKey = img.GetPixel(2, 2) 
End Sub 
+0

Я добавил код ниже, чтобы получить то, что вы ищете. Если вам понадобится дополнительная информация, пожалуйста, добавьте комментарий, и я обновлю то же самое –

ответ

11

Использование TransparencyKey для прозрачной формы.

например.

TransparencyKey = Color.Red 
Button1.BackColor = Color.Red 

Теперь запустите форму, и вы увидите, что в этой кнопке есть отверстие.

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

Редактировать: Извините за поздний ответ.

После ваш код изменен в соответствии с вашим требованием

Public Sub New() 

    Me.SetStyle(ControlStyles.SupportsTransparentBackColor, True) 
    Me.BackColor = Color.Transparent 

    ' This call is required by the Windows Form Designer. 
    InitializeComponent() 
    ' Add any initialization after the InitializeComponent() call. 
    Dim img As Bitmap = CType(Me.BackgroundImage, Bitmap) 

    'img.MakeTransparent(img.GetPixel(2, 2)) 
    Me.FormBorderStyle = Windows.Forms.FormBorderStyle.None 
    Me.TransparencyKey = img.GetPixel(2, 2) 
End Sub 
+0

Хотя это может быть старое сообщение, верхний результат Google. Пример сокращения, который может работать для некоторых людей, - это просто «TransparencyKey = Me.BackColor». Но убедитесь, что обратная сторона ваших форм не находится на изображении, которое вы используете или какое-либо другое элементы управления на форме. По-прежнему задайте обратную цвет вашей формы, чтобы иметь цвет unqiue – Mayhem

-2
Me.Opacity = 0 

Имейте в виду, что:

  1. Это для всей формы, а не только на заднем плане. Есть рабочие места, чтобы сделать некоторые части более непростыми.
  2. Это только psuedo-transparent, где требуется моментальный снимок того, что стоит за ним. Он достаточно умен, чтобы знать, когда вы перемещаете форму, но не тогда, когда вы перемещаете другие прозрачные объекты поверх формы.
+0

Это также скроет все элементы управления в форме. – Ahmad

1

Есть несколько методов, которые вы могли бы использовать.

  • Используйте формы TransparencyKey
  • Override OnPaintBackground (WM_ERASEBKGND)
  • Override WndProc и обрабатывать сообщения краски (WM_NCPAINT, WM_PAINT, и т.д.)

Я рекомендую переопределяем оконную процедуру, чтобы получить оптимальный Результаты.

2

Комплект прозрачности формыКлючевое свойство цвета, аналогичное формату свойства фона

Смежные вопросы