투명하지 않은 부분에 추가 텍스트가있는 반투명 한 부분을 만들고 싶습니다.C#에서 부분적으로 투명하게 양식의 일부를 만들 수 있습니까?
어떻게 C#에서이 작업을 수행 할 수 있습니까?
투명하지 않은 부분에 추가 텍스트가있는 반투명 한 부분을 만들고 싶습니다.C#에서 부분적으로 투명하게 양식의 일부를 만들 수 있습니까?
어떻게 C#에서이 작업을 수행 할 수 있습니까?
나는 투명도를 적용 할 수 있다고 생각하지 않습니다는 형태보다는 전체, 전체 양식의 일부에 (더 정확하게, 불투명도라고합니다).
그러나 사용자 정의 모양의 양식 (즉, 사각형이 아닌)을 매우 쉽게 만들 수 있습니다. 양식의 여러 부분이 투명합니다. 달성하고자하는 정확한 "모양"에 따라, 이것은 당신이 얻을 수있는 가장 가까운 것일 수 있습니다.
사용자 정의 모양의 양식을 작성하기위한 이러한 링크에서보세요 :
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
유일한 다른 대안이 설정되어 하나의 두 가지 형태를 표시 할 수 있습니다 부분적으로 투명하다. 프로그래밍 방식으로 두 번째 폼이 "기본"폼 바로 옆에 배치되고 사용자가 "주"폼을 이동/크기 조정할 때 비례 적으로 이동/크기 조정됩니다. 이것은 두 가지 형태이지만 사용자에게 실제로는 단 하나의 형식 인 것처럼 보이도록 만들 수 있습니다. 그러나 이것은 매우 까다로울 수 있으며 완벽한 솔루션이 될 수는 없습니다 (그러나 "충분할 수 있습니다" 귀하의 정확한 요구에 따라).
p/invoke 호출 및 해결 방법을 사용하지 않고도 WinForms에서이 작업을 수행 할 수 있는지 확실하지 않습니다.
대신 WPF (Windows Presentation Foundation)를 사용하는 것이 좋습니다. 이러한 효과는 거의 구현할 수 없습니다. 간단한
양식에 완전히 투명 한 창을 만든 다음 반투명 한 모양을 완전히 투명한 창 위에 떠서 넣으면됩니다.
먼저 주 폼의 TransparencyKey를 Color.Red로 설정 한 다음 양식에 panel1
이라는 이름의 패널을 배치하고 BackColor를 빨간색으로 설정합니다. 이렇게하면 완전히 투명한 "창"이 만들어집니다. 이 같은 폼 수준 폼 참조 만들기 :
private Form _floater;
다음, 메인 폼의 Load 이벤트에서이 코드를 넣어 :
_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);
을 마지막으로, 기본 폼의 이동 이벤트에서이 코드를 넣어 :
_floater.Location = panel1.PointToScreen(new Point(0, 0));
여기에서 유일한 문제는 사용자가 반투명 "창"을 클릭하면 두 번째 양식이 포커스를 받게되므로 기본 폼의 TitleBar가 회색으로 표시됩니다.
Click here 양식에이 반투명 창을 사용하여 샘플 응용 프로그램을 실행하십시오.
왜 -1입니까? 내 대답에 무슨 문제가 있었습니까? WinForms에서는 완전한 양식에만 투명도를 설정할 수 있지만 그 부분에는 투명도를 설정할 수 없기 때문에 쉽게 처리 할 수 있습니다. – codymanix
+1은 downvote를 중화합니다. WinForms에서이 작업을 수행하는 것은 그리 어렵지 않지만 MSE 엔지니어가 모든 작업을 수행 할 때 재미가 없지만 WPF *는 * 약간 * hacky * * * 더 좋습니다. – MusiGenesis
적어도 "덜 재미있는"논쟁은 매우 논란의 여지가있는 것으로 간주 될 수 있습니다 .. – codymanix