Chcę, aby część formularza była półprzezroczysta, a dodatkowy tekst na tej części nie jest przezroczysty.Jak sprawić, aby część formularza była częściowo przezroczysta w języku C#?
Jak mogę to zrobić w języku C#?
Chcę, aby część formularza była półprzezroczysta, a dodatkowy tekst na tej części nie jest przezroczysty.Jak sprawić, aby część formularza była częściowo przezroczysta w języku C#?
Jak mogę to zrobić w języku C#?
Nie sądzę, można zastosować przezroczystość (bardziej poprawnie nazwać, Krycie) tylko część, a nie postaci kompletnej, całego formularza.
Można jednak dość łatwo utworzyć niestandardową formę kształtową (to jest nieprostokątną), przy czym różne części tej postaci są przezroczyste. W zależności od dokładnego "wyglądu", który próbujesz osiągnąć, może być najbliższy.
Spójrz na te linki do tworzenia własnych niestandardowych kształcie postać:
Creating Custom Shaped Windows Forms in .NET
Custom shaped form with a drop down in C#
Shaped Windows Forms and Controls in Visual Studio .NET
Jedyną alternatywą mogą być wyświetlane w dwóch formach, z których jedna jest ustawiona być częściowo przezroczyste. Musiałbyś programowo upewnić się, że drugi formularz jest umieszczony bezpośrednio obok "głównego" formularza i jest przesuwany/zmieniany proporcjonalnie, gdy użytkownik przesunie/zmieni rozmiar "głównego" formularza. Chociaż jest to dwie formy, można by zapytać użytkownika, że w rzeczywistości jest to tylko jedna forma, chociaż może to być dość trudne do zrobienia i nie byłoby idealnym rozwiązaniem (ale może być "wystarczająco dobre" w zależności od według twoich potrzeb).
Nie jestem pewien, czy jest to możliwe nawet w przypadku WinForms bez wykorzystywania wywołań p/invoke i obejść.
Zamiast tego możesz użyć Windows Presentation Foundation (WPF), gdzie takie efekty są niemal banalne do zaimplementowania.
Można to zrobić, tworząc całkowicie przezroczyste okno w formularzu, a następnie przestawiając półprzezroczysty formularz na całkowicie przezroczyste okno.
Najpierw ustaw kursor na formularzu głównym na Color.Red, a następnie umieść panel o nazwie panel1
w formularzu i ustaw jego kolor BackColor na czerwony. Spowoduje to utworzenie w pełni przezroczystego "okna". Utworzyć odwołanie Form forma poziomu takiego:
private Form _floater;
Następnie umieścić ten kod w przypadku obciążenia głównego formularza:
_floater = new Form();
_floater.ShowInTaskbar = false;
_floater.FormBorderStyle = FormBorderStyle.None;
_floater.Opacity = .5;
_floater.Size = panel1.Size;
_floater.StartPosition = FormStartPosition.Manual;
_floater.Location = panel1.PointToScreen(new Point(0, 0));
_floater.Show(this);
Wreszcie umieścić ten kod w przypadku Move głównego formularza:
_floater.Location = panel1.PointToScreen(new Point(0, 0));
Jedynym problemem jest to, że jeśli użytkownik kliknie w półprzezroczyste "okno", drugi formularz będzie fokusować, więc tytuł główny w formularzu jest wyszarzony.
Click here do uruchomienia przykładowej aplikacji z tym półprzezroczystym oknem na formularzu.
Dlaczego -1? Co było nie tak z moją odpowiedzią? W WinForm można ustawić przezroczystość tylko w pełnym formularzu, ale nie w częściach, więc wątpię, by było to łatwe. – codymanix
+1, aby przeciwdziałać spadkowi. To nie jest takie trudne w WinForms, ale * jest * nieco zhakowane i WPF * jest * lepszy dla tego rodzaju rzeczy (chociaż jest mniej zabawne, kiedy inżynierowie MS robią wszystko dla ciebie). – MusiGenesis
Przynajmniej twoja "mniej zabawna" argumentacja może być uznana za bardzo kontrowersyjną. – codymanix