|
음...
TLabel , TShape , TImage등은 GraphicControl입니다.
이런 놈들은 Window Handle이 없는 놈들이죠.
그래서 자신의 모습을 스스로 나타내지 못하고 Parnet-Control의 dc에다가 그려줍니다.
이때 투명하게 또는 반투명하게도 쉽게 가능하것입니다.
하지만
TRadioButton을 비롯한 다른 대부분의 Control들은 WinControl입니다.
Window-Handle이 있죠
자신의 모습을 자신의 window-dc에다가 그려야죠
이때 Parent-dc에다가 그리는것이 아니므로 투명하게 그리는것이 쉽지 않는것입니다.
---------------------------------------------------------------------------
@ 쉬운 방법이 한가지 있기는 한데..
TXPManifast를 이용하면 쉽게 가능합니다.
exe의 리소스에 XPManifast내용이 들어가있으면..
Application의 모든 Control에 Manifast가 적용됩니다.
그러면 RadioButton이 투명하게 되더군요
하지만 위 방법은 주의해야할것이 있습니다.
최신버젼(Rad2010)에서는 문제가 많이 없어졌지만..
Delphi7 , C++Builder6버젼까지에서는 Manifast를 쓸경우 몇가지 문제가 발생하더군요
Panel 의 Color가 적용이 안된다던지 등..
리소스에 Manifast를 집어넣는것은
TXPManifast라는 Component가 있는데 이놈을 하나 폼위에 올려놓으시면 됩니다.
전체 프로젝트에서 딱 하나만 있으면 됩니다.
@ 어려운 방법은?
RadioButton의 WM_ERASEBKGND 메세지와 WM_PAINT등의 메세지를
sub-classing(또는 hooking)해서 직접 그리기처리를 해줘야 합니다.
그럼..
JGY 님이 쓰신 글 :
: 안녕하십니다. 빌더를 시작한지 얼마안되는 초보라 많은 조언좀 부탁드리겠습니다.
:
: 다름이 아니라 폼위에 배경 이미지를 폼 전화면에 올린상태에서
:
: 그위에 라디오 그룹,버튼을 올리면 컴포넌트 여백 흰부분에 의해서 뒤에 이미지가 가려지는 문제가 있습니다.
:
: 라벨은 Transparent 기능으로 뒤에 이미지를 비추게 할수 있던대.. 라디오 구룹이랑 버튼은 이런 기능이 없는지요?
:
: 2틀동안 여기에 시간을 소비하니.. 답답하네요 ㅎㅎ;
:
: 그냥해도 상관은 없지만.. UI쪽을 담당하게 되어서.. 가능하면 이쁘게 꾸미고 싶습니다.
:
: 파일을 첨부하오니 확인해보시고 답변좀 부탁드리겠습니다.
|