2011-10-30 4 views
0

내 win32 앱 (MFC 없음)에 소유자 드로잉 버튼을 구현했습니다. 버튼은 일반적인 20x20 비트 맵 (투명도가있는 원형 아이콘)입니다. 문제는 단추가 단단한 배경에 배치되고 단추가 회색 배경을 볼 수 있다는 것입니다 (비트 맵이 둥글기 때문에). 나는 NULL_BRUSH하지만 행운과 함께 WM_CTLCOLORBTN에 응답을 시도했다. 나는 비트 맵과 ico 파일을 사용하여 버튼을 표시하려고 시도했지만 실마리가 없다. 아무도이 문제를 해결하는 방법을 알고 있는가?투명 이미지가있는 win32 C++ 소유자 드로잉 버튼

이 내 문제, 설정 아이콘이 사각형이 아닌 컨트롤을 만들기 위해 노력하고있는 것 같습니다 가장자리 (흰색하지/회색)

enter image description here

+0

실제로 무엇을하려고합니까? 완전히 보이지 않는 버튼을 만드시겠습니까? –

+0

아니오 설정 버튼입니다. 둥근 아이콘이므로 가장자리의 회색 배경을 볼 수 있습니다. – blejzz

+0

그것은 매우 불분명하다. 그러나 당신이 요구 한 것을 얻은 것처럼 들린다. 이미지는 * 버튼의 * 배경에 투명합니다. 실제로 부모의 * 배경에 대해 투명하게하려면 WS_EX_TRANSPARENT 스타일 비트를 변경해야합니다. –

답변

1

@ joel의 대답 외에도 일부 이미지 편집기 (RGB (0xFF, 0x00,0xFF))를 사용하여 투명도를 유지하려는 영역에 고유 한 색을 넣으려는 경우, 그런 다음 사용하십시오 TransperantBlt

+0

transparnetBlt 함수를 사용하지 못했습니다 (여전히 기본 버튼 배경을 제거해야했습니다). 그래서 TransparentBlt를 결합하고 트릭을 한 WM_CTLCOLORBTN 메시지에 hollow_brush를 반환했습니다. – blejzz

2

에서 투명해야한다.

SetWindowRgn을 호출하면 Windows에 컨트롤이 직사각형이 아닌 것으로 알릴 수 있습니다.

1

단색 배경이지만 이미지에 일종의 주황색 노란색 그라데이션이 배경으로 표시됩니다. 정말 표준 윈도우 버튼 솔리드 컬러라면 LR_LOADMAP3DCOLORS 또는 LR_LOADTRANSPARENT를 사용하여 LoadImage로 비트 맵을로드 할 수 있습니다. 그라디언트가 있기 때문에 비트 맵을 가려 내기 위해 더 복잡한 기법을 사용해야합니다. http://www.winprog.org/tutorial/transparency.html