2009-10-28 7 views
2

TWinControl 기반 컨트롤의 불투명도를 어떻게 바꿀 수 있습니까? 왜이 기능을 TControl/TWinControl 수준에 추가하지 않았습니까 (왜 TForm 만 사용합니까?).TWinControl의 불투명도?

+1

나는 어떻게 할 수 있겠는가. 내가 이해하는 바와 같이, Windows는 투명도를 윈도우에만 추가했기 때문에 TForm이 그것을 처리 할 수 ​​있지만 개별 컨트롤은 처리 할 수없는 이유입니다. VCL의 대부분은 단순히 Windows 공용 컨트롤을 둘러싼 래퍼이므로 Windows에서 수행하지 않으면 관련된 VCL 컨트롤도 거의 사용되지 않습니다. 타사 구성 요소는 종종 기본 기능을 확장합니다. –

+0

@_J_ : 정확합니다. 왜 이것을 받아 들일 수 있도록 대답으로 추가하지 않겠습니까? –

답변

5

레이어링 된 윈도우이라는 기능을 사용하면 윈도우의 불투명도를 제어 할 수 있습니다. 당신은 read more about the feature on MSDN 일 수 있습니다. 이 기능은 최상위 레벨 창에서만 사용할 수 있습니다. 내가 말할 수있는 한, Desktop Window Manager (Vista의 "유리"효과)는 최상위 창에서만 사용할 수 있습니다.

하위 창에서 사용할 수있는 대체 방법은 window regions을 사용하여 창 영역을 완전히 투명하게 표시하거나 bitmap alpha blending을 사용하여 전체 컨트롤을 직접 그려야합니다.

+0

링크를위한 노력에 감사드립니다. –

5

감사합니다.

나는 어떻게 할 수 있겠는가? 내가 이해하는 바와 같이, Windows는 투명도를 윈도우에만 추가했기 때문에 TForm이 그것을 처리 할 수 ​​있지만 개별 컨트롤은 처리 할 수없는 이유입니다. VCL의 대부분은 단순히 Windows 공용 컨트롤을 둘러싼 래퍼이므로 Windows에서 수행하지 않으면 관련된 VCL 컨트롤도 거의 사용되지 않습니다. 타사 구성 요소는 종종 기본 기능을 확장합니다.

+3

이것을 편집하십시오. 심지어 컨트롤이 창입니다 ('HWND' 타입). 중요한 점은 'WS_CHILD' 스타일이없는 창만 지원한다는 것입니다. 'WS_CHILD' 스타일을 설정하는 오버라이드 된'CreateParams' 메쏘드가있는 폼은 반투명 할 수 없습니다. – mghie

+0

mghie, 고마워, 네 의견에 다 말했어. –