|
님께서 무얼 만드시려지?
왜 AlphaBlending기능이 필요한지 궁금하네요..
앞에 답변에 설명이 조금 잘못되었네요
다시 말씀드리면 Window-Handle이 있는 Contorl의 경우 (Form이나 Frame , Panel, Edit 등등..)
Parent가 없는 즉 독립도니 Window이어야 Win32에서 제공하는 방식으로 AlphaBlending이 가능합니다.
다른 방식으로는 쉽지 않습니다.
그래도 굳이 AlphaBlending을 하고 싶다면..
[방법1]
; 위 설명에 답이 하나 있는데요...
Handle이 있는 Control이기때문에 AlphaBlending이 제대로 안되는것이므로
Handle이 없는 GraphicControl을 이용하면 가능하다는 얘기가 되겠죠..
Graphic-Control은 자신을 나타낼 dc가 없으므로
Parent되는 WinControl의 dc에가다 자신을 draw해줍니다.
Parent의 dc에다가 draw해줄때 Alphablending으로 draw해주면 되겠죠..
[방법2]
; 편법인데요..
; Form을 이용합니다.
독립된 Form으로 AlphaBlending기능을 만듭니다.
하지만 마치 MainForm의 안에 있는 Panel같은 Control처럼 보이도록 만들어야겟쬬
- 독립된 폼이 MainForm의 Client영역 안에서만 움직어야 할것이며
- MainForm안에 있는 Control처럼 MainForm이 Colos되거나 Maximize/minimiz될때 동기되어야겟쬬..
(이부분도 삽질일듯...)
[방법3]
- 버벅 거리고 ,까다롭고 좋지 않는 방법인데요...
- Panel을 이용한다고 하구요...
- Panel의 PAINT 메세지에서 .. 메모리 DC를 하나 생성하여서..
- Panel의 Parent-Control의 이미지를 가져옵니다.
(이때 Panel자신을 포함하여 자신보다 ZOrder가 높은 놈은 빠지도록 해야겠죠)
- 가져온 image에다가 자신의 image와 AlphaBlending합니다.
- 그런후에 자신의 DC에 Draw해줍니다.
[방법4]
...
...
프로그램의 목적에 따라 맞는 방법이 다를것인데요
추천1. 가능하면 AlphaBlending을 안쓴다.
추천2. AlphaBleing을 지원하는 GraphicControl을 이용한다.
그럼..
김현승 님이 쓰신 글 :
: 답글 감사합니다.
: 저렇게 하는것을 포기 할 수 없어 다시 질문드립니다.
: 사실 Panel에 저렇게 할 수 있다면 좋겠는데...안되서 저렇게 해 볼려고 했었는데....
:
: Panel이나 Frame이나 등등에 저렇게 투명도를 조절할 수 있는 컴포넌트나 방법이 있나요??
:
: 아시는 분있으시면 답글 부탁드립니다.
:
:
:
: 장성호 님이 쓰신 글 :
: : 안됩니다.
: :
: : DesktopWindow를 WndParent로 가진 윈도우(작업표시줄에 나타나는..) 인경우에만
: : 일반적인 방법으로 AlphaBlending이 적용됩니다.
: :
: : 그럼..
: :
: :
: : 김현승 님이 쓰신 글 :
: : : 안녕하세요
: : :
: : : fsMDIChild에 대해서 폼에 투명도를 조절 하고 싶습니다.
: : : AlphaBlend를 true로 한 후, AlphaBlendValue값을 조절하는 방식으로 투명도를 조절 하고 싶은데...
: : : fsMDIChild에서는 조절이 안되네요...
: : :
: : : fsMDIForm에서 조절을 하면 잘 됩니다. 문제는 fsMDIChild 폼까지 모두 적용이 된다는 것이 문제고 또하나는 부모 폼은 투명도를 조절할 필요가 없거든요...
: : :
: : : 자식폼만 조절을 하고 싶은데...답변 두탁드립니다.
|