2014-04-29 5 views
1

양식의 배경색을 투명하게 설정하고 싶습니다. 이 설정은 TransparencyKey으로 가능하다는 것을 알고 있지만 양식에 렌더링 된 다른 알파 값을 가진 이미지가 있기 때문에이 경우에는 효과가 없습니다. OnPaintBackground 메서드를 덮어 쓰려고했지만 검정색 배경이되었습니다. 양식 배경 투명성을 설정하는 더 좋은 방법이 있습니까?투명 배경이있는 양식

답변

1

그럴 수 없으므로 투명한 색으로 배경을 밝게 비출 수 있습니다. 그러나 양식의 배경 자체에는 배경이 없습니다. 창을 만들 때 비디오 어댑터의 프레임 버퍼에서 초기화 된 픽셀을 볼 수 있습니다. 일반적으로 흰색 인 경우 Opacity 또는 TransparencyKey 속성을 사용하면 일부 컴퓨터에서 검은 색이됩니다.

창 자체에 구멍을 뚫어 뒤에있는 창을 볼 수 있도록하려면 계층 창을 사용해야합니다. 비디오 어댑터 자체는 프레임 버퍼의 픽셀과 창의 픽셀을 결합하여 별도의 오버레이에 저장합니다. 날씨지도 앞에 서있는 날씨 남자와 함께 텔레비전에서 사용되는 것과 같은 종류의 효과가 색상 키잉이라고합니다.

어느 것이 쉬운 일인지, 간단히 양식의 BackColor를 TransparencyKey 속성과 동일한 값으로 설정하면됩니다. 창에서 다른 곳에서는 나타나지 않는 "비정상적인"색상을 선택하십시오. 색상. 자홍색은 훌륭한 색조입니다.

+0

투명도 키를 설정하는 것이 가능하지만 문제는 이것이 0과 1 이외의 알파 투명도를 가진 이미지에서 작동하지 않는다는 것입니다. – user3075425

+2

TransparencyKey 속성이 아니라 이미지에 문제가 있습니다. 픽셀 당 알파는 렌더링에 24bpp GDI를 사용하는 모든 응용 프로그램에서 매우 잘 작동하지 않습니다. 도구 상자의 표준 Windows 컨트롤과 비슷합니다. 그들은 또한 투명해진다. 픽셀 당 알파가 필요한 경우 표준 컨트롤을 포기하고 자신 만의 요리를하거나 WPF, Silverlight 또는 Windows 런타임과 같은 클래스 라이브러리를 사용하지 않는 클래스 라이브러리로 이동해야합니다. –

1

TransparencyKey를 설정하지 마십시오. 불투명도를 설정 :

this.Opacity = 0.5d; 

참고 :이, (반) 투명 전체 창을 만드는 경계를 포함하고 헤더! 0.0d로 설정하면 완전히 보이지 않습니다!

+0

그러나 양식의 양식과 내용이 사라집니다. 콘텐츠는 계속 표시되어야합니다. – user3075425

0

그래도 투명하게하려면 배경을 칠해야합니다. 그렇지 않으면 검정색 배경이 잘 보입니다.

protected override void OnPaintBackground(PaintEventArgs e) 
{ 
    using (SolidBrush brush = new SolidBrush(this.TransparencyKey)) 
     e.Graphics.FillRectangle(brush, ClientRectangle); 
} 

투명성 키와 배경색

TransparencyKey = BackColor = Color.LavenderBlush; // to example 

및 사용자 페인트 스타일을 설정하는 것을 잊지 마십시오.

+0

흠, 실제로 그 그림은 필요하지 않을지도 모르겠다. 나는 'HatchBrush'를 사용하는 프로젝트에서 그것을 뜯어 낸다 (그래서 완전히 투명하지는 않다). – Sinatr

관련 문제