Как я могу установить форму, чтобы иметь прозрачный фон

Вы можете использовать лямбду

boolean hasThisDog = dogs.stream().anyMatch(d -> dogName.equals(d.getName()));
if(hasThisDog){
  System.out.println("Error: this dog is already up for auction.");
}else{
  auction.add(new auction(dogName));
   System.out.printf(dogName + " has been put up for auction in auction #%d", i);
   System.out.println();
   current = true;
}

Или вы можете использовать SET. SET предотвращает дублирование по умолчанию. Вы можете прочитать о здесь Java: избегайте вставки дубликатов в arraylist

Set set = new HashSet();
set.add(foo);
set.add(bar);

public class Dog{
     @Override
     public boolean equals(Object obj) {
       if (obj instanceof Dog)
         return (this.name= obj.name) 
      else
         return false;
    }
 }

6
задан Mark Hall 5 November 2011 в 21:43
поделиться

3 ответа

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

например.

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

Теперь выполните форму, Вы найдете, что button1 имеет дыру в нем.

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

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

Следующее является Вашим кодом, измененным для удовлетворения требованию

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
12
ответ дан 8 December 2019 в 18:42
поделиться
Me.Opacity = 0

Предупредите что:

  1. Это для всей формы, а не просто фона. Существуют обходные решения для создания определенных частей более непрозрачными.
  2. Это - только psuedo-прозрачность, где это берет снимок того, что находится позади него. Достаточно умно знать при перемещении формы, но не при перемещении других прозрачных объектов сверху формы.
-2
ответ дан 8 December 2019 в 18:42
поделиться

Существует несколько методов, которые Вы могли использовать.

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

Я рекомендую переопределить оконную процедуру для получения оптимальных результатов.

1
ответ дан 8 December 2019 в 18:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: