2010-12-02 3 views
3

나는 여기서 내 마음을 잃을거야.
체크 상자 컨트롤이 그 뒤에있는 항목과 조화를 이루지 않는 이유는 무엇입니까?
이 질문은 모든 WinForms 컨트롤에 적용됩니다. 그러나 이것을 예제로 사용하고 있습니다.원본 WinForms 컨트롤에서 투명 BackColor를 얻는 방법?

alt text

그리고 몇 가지 더 말씀 : 다음 CheckBox의 의미를 이 PictureBox ES와 Button를 착색하는

천개의 단어가 그림에 가치가있다.
CheckBoxBackColorTransparent으로 설정됩니다. 그러나 어떻게 든 그것은 그것이 Form을 포함하는 BackColor을 공유해야한다는 것을 의미한다고 결정합니다 (투명성의 환상이라는 생각입니까?).

WinForms에서는이 기능을 사용할 수 있습니까? 나는 전에 이것을 한 것을 맹세 할 수 있었다.

는 UPDATE : 난 그냥이 시도
: 그 형태에
CheckBoxBackColorTransparent에, 그럼 다른 색으로 포함 FormBackColor을 변경 설정하고 CheckBoxBackColor 일치합니다 . 무엇 .......?

+0

내가 전에이로 실행했는데 내가 아는 한, 그 모든 이야기입니다. 나는 다른 누군가가 당신을위한 해결 방법을 가지고 있기를 바랍니다 :) – clifgriffin

답변

1

확인란의 배경색을 원하는 색으로 수동으로 설정할 수 있습니까? (뒤에있는 그림 상자의 값)

'투명함'은 사용자가 원하는 것과 다른 의미가있을 수 있습니다.

또한 pictureboxes의 zorder를 변경 (앞쪽으로 가져 오기)하고 체크 박스의 기본 색상이 변경되는지 확인하십시오.

6

이것은 Windows 창인 컨트롤의 부작용입니다. 창 자체는 그리기를 담당하고 OnPaintBackground 및 OnPaint 메서드가이를 처리합니다.

이 렌더링 모델은 투명도를 잘 지원하지 않습니다. 계층화 된 창을 사용하여 진정한 투명성을 지원합니다. 비디오 어댑터에 의해 구현되었지만, Windows는 하드웨어 오버레이 기능을 사용합니다. 하지만 그것은 상위 창, 하위 창이 아니라 작동합니다. Form.Opacity 및 Form.TransparencyKey 속성을 확인하십시오.

트릭을 통한 투명성을 부분적으로 지원합니다. 컨트롤은 컨트롤 창 내부에 먼저 부모 창을 표시하도록 요청하여 가짜로 만들 수 있습니다. 그러면 배경 픽셀이 생성되고 그 위에 그릴 수 있습니다. BackColor 속성을 Color.Transparent로 설정하면이 기능을 지원하는 컨트롤에서이 트릭을 사용할 수 있습니다. 모든 ButtonBase 파생 클래스가 수행합니다. 그러나 네이티브 Windows 컨트롤의 래퍼 인 컨트롤은 아닙니다.

"부모 창 묻기"는이 트릭의 결함이 스크린 샷에 표시되는 위치입니다. 양식 픽셀이 표시됩니다. 스태킹 효과는 작동하지 않으며 Z- 순서의 ​​중간 창은 고려하지 않으며 부모 만 고려합니다. 이 문제는 고칠 수 있지만 은 매우입니다. 코드가 표시된 기술 자료 문서가 있습니다.

WPF에도 이러한 제한이 없습니다.컨트롤은 창문이 아니며 부모 위에 그리는 방식으로 렌더링됩니다. 페인트의 레이어. 투명성은 이제는 사소한 것이고 페인트하지 마십시오.