2014-01-05 3 views
1

나는 여기서 약간 당황 스럽다. C#에서는 폼에 그림 상자가있는 투명한 배경을 가진 폼이 있습니다. picturebox는 많은 투명 영역이있는 PNG 이미지를 가지고 있으며, 이것은 Photoshop에서 보았 듯이 분명합니다. 투명도가 있습니다!그림 상자의 투명한 PNG

그러나 내 응용 프로그램을 실행할 때 PNG 이미지가 투명 부분을 무시하는 몇 가지 이유가 무엇입니까? 어떤 아이디어?

지금은 이미지가 일부 파트에서 투명도를 적용한 것처럼 보이지만 그 이미지는 끔찍한 얼룩진 이미지로 보입니다.

나는 사진과 함께이 설명 할 필요 : 당신은 내가 파란색으로 폼 배경을 설정 한보고, 더, 투명성 키를 설정할 수 있습니다 왼쪽에

enter image description here

. 상단의 인터페이스 PNG는 인터페이스 요소와 심지어 반투명 배경 인터페이스 사이의 투명도로 작동합니다! 이미지를 통해 양식 배경을 볼 수 있습니다.

오른쪽 이미지에 배경 투명도 키를 배경색과 동일하게 설정했습니다 ... 모든 양식을 투명하게 만들었지 만 투명도를 무시한 것처럼 보입니다. PNG ... 양식 배경색이 그림 상자 아래에 있고 그 끔찍한 톱니 모양의 가장자리로 보이게 만듭니다.

그래서 PNG가 양식이 투명하지 않은 경우 PNG 아래에서 나머지 양식을 숨기지 않는 이유는 무엇입니까? 내가 여기서 볼 수있는 것은 PNG 인터페이스 요소와 반투명 부분을 통해 보여지는 데스크탑입니다. 그러나 볼 수있는 것은 모두 제가 양식에 설정된 색상입니다!

나는 의미가 있기를 바랍니다.

나는 PNG 부분에 그림자가있는 경우에만 문제가 발생합니까?

+1

대답 (들) 여기 http://stackoverflow.com/questions/4144371/a-picturebox-problem – keyboardP

+0

내가 제목을 편집 한 도움이 될에게 있습니다. "[제목에"태그 "가 포함되어 있어야합니까?] (http://meta.stackexchange.com/questions/19190/)"합의가 "아니오, 그렇지 않아야합니다"로 표시되어야합니다. –

+0

편집 해 주셔서 감사합니다. 바보 같은 규칙이 정말 있습니까? – Glen

답변

0

당신이 말했듯이 그림자가 생기기 때문에 이런 현상이 발생합니다. 투명도 키는 양식이 그려진 후 디스플레이에서 지정한 정확한 색상을 제거하여 작동하므로 그림자가 배경과 혼합되면 투명하지 않은 새 색상이 만들어집니다. 일부 API 호출을 사용하고 픽셀 별 마스크 (기본적으로 회색 음영 비트 맵, 각 픽셀에 투명도 레벨이 무엇인지 알려 줌)를 사용하여이를 무시할 수 있습니다.

좋은 예제 프로젝트 here

+0

간단한 해결책이 없다고 확신합니까? 왜 PNG를 렌더링해야하는지 모르겠다. 나는 심지어 투명 상자 위에 그림 상자의 이미지를 사용하려했지만 동일한 문제가 있습니다. – Glen

+0

불행히도, 확실합니다. 문제는 GDI 기술이 마지막으로 업데이트 된 시점이 PNG가 GUI 용으로 널리 사용되는 형식이되기 전에 Windows XP가 출시 된 시점이었습니다. WPF는 반투명 윈도우를 지원해야하지만, WinForms (및 GDI, 익스텐트 별)를 사용하는 한 유일한 옵션은 투명한 색상을 선택하거나 비트 마스크를 사용하는 것입니다. –