2009-10-11 4 views

답변

7

나는 투명도를 적용 할 수 있다고 생각하지 않습니다는 형태보다는 전체, 전체 양식의 일부에 (더 정확하게, 불투명도라고합니다).

그러나 사용자 정의 모양의 양식 (즉, 사각형이 아닌)을 매우 쉽게 만들 수 있습니다. 양식의 여러 부분이 투명합니다. 달성하고자하는 정확한 "모양"에 따라, 이것은 당신이 얻을 수있는 가장 가까운 것일 수 있습니다.

사용자 정의 모양의 양식을 작성하기위한 이러한 링크에서보세요 :

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

유일한 다른 대안이 설정되어 하나의 두 가지 형태를 표시 할 수 있습니다 부분적으로 투명하다. 프로그래밍 방식으로 두 번째 폼이 "기본"폼 바로 옆에 배치되고 사용자가 "주"폼을 이동/크기 조정할 때 비례 적으로 이동/크기 조정됩니다. 이것은 두 가지 형태이지만 사용자에게 실제로는 단 하나의 형식 인 것처럼 보이도록 만들 수 있습니다. 그러나 이것은 매우 까다로울 수 있으며 완벽한 솔루션이 될 수는 없습니다 (그러나 "충분할 수 있습니다" 귀하의 정확한 요구에 따라).

0

p/invoke 호출 및 해결 방법을 사용하지 않고도 WinForms에서이 작업을 수행 할 수 있는지 확실하지 않습니다.

대신 WPF (Windows Presentation Foundation)를 사용하는 것이 좋습니다. 이러한 효과는 거의 구현할 수 없습니다. 간단한

+0

왜 -1입니까? 내 대답에 무슨 문제가 있었습니까? WinForms에서는 완전한 양식에만 투명도를 설정할 수 있지만 그 부분에는 투명도를 설정할 수 없기 때문에 쉽게 처리 할 수 ​​있습니다. – codymanix

+0

+1은 downvote를 중화합니다. WinForms에서이 작업을 수행하는 것은 그리 어렵지 않지만 MSE 엔지니어가 모든 작업을 수행 할 때 재미가 없지만 WPF *는 * 약간 * hacky * * * 더 좋습니다. – MusiGenesis

+0

적어도 "덜 재미있는"논쟁은 매우 논란의 여지가있는 것으로 간주 될 수 있습니다 .. – codymanix

0

:

myForm.Opacity = 80; // Change 80 with your value 
+2

@FBSC - 전체 양식의 불투명도가 변경됩니다. 원래의 질문자는 양식 전체가 아닌 부분의 불투명도 만 변경하려고합니다. – CraigTP

+0

죄송합니다, 그 "부분"을 건너 뜁니다 : S – FBSC

5

양식에 완전히 투명 한 창을 만든 다음 반투명 한 모양을 완전히 투명한 창 위에 떠서 넣으면됩니다.

먼저 주 폼의 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 양식에이 반투명 창을 사용하여 샘플 응용 프로그램을 실행하십시오.