|
세가지 방법이 있습니다.
하나는 GDI만 써서 처리하는 방법입니다만 픽셀단위로 배경픽셀과 그릴 색을 합성하는 방법으로 투명도 값을 이용해 블랜딩하는겁니다. 90%투명도라면 배경색 * (1 - 0.9) + 브러시색 * 0.9 이런식으로 계산되겠죠. 물론 0~255 값을 가지도록 처리해줘야합니다. 가장 원론적이고 기본적인 방법입니다만 속도를 내려면 상당한 내공이 필요합니다.
또 하나는 간단하게 GDI+를 이용하는 방법으로, GDI+에서는 기본적으로 투명도를 지원합니다.
마지막은 DirectDraw를 이용하는 방법입니다. 가장 고속으로 처리할 수 있습니다.
제가 보기엔 GDI+를 적용하는것이 가장 적합해 보이는군요.
잠스터 님이 쓰신 글 :
: Polygon이나 Rectangle 함수로 어떤 영역을 그릴 때,
: 내부 영역은 완전 투명이 아닌 반투명으로 해서 배경의 색이 비치게 그리고 싶습니다.
:
: 완전 투명 브러쉬는
: LOGBRUSH lplb;
: lplb.lbStyle = BS_HOLLOW;
: lplb.lbHatch = 0;
: lplb.lbColor = RGB(0,0,0);
: HBRUSH brush = CreateBrushIndirect(&lplb);
: 이렇게 구현했는데 반투명은 모르겠네요..
: 가령 빨간색 반투명 브러쉬는 어떻게 해야 하는지 답변 부탁드립니다...
|