문제

C# / Windows 양식 사용. 클릭을받을 수있는 능력을 잃지 않고 양식의 배경을 투명하게 만들려고합니다.

  1. this.

  2. 백콜로 = Color.red;
    Transparencykey = 백 콜러;

양식의 배경을 투명하게 만들고 클릭 할 수 있습니다. 양식이 투명 해지기를 원하지만 클릭을받을 수 있어야합니다.

어떻게?

도움이 되었습니까?

해결책

wm_nchittest를 처리해야합니다. 아래 스 니펫에서 M.LPARAM에는 화면의 왼쪽 상단 모서리에 대한 마우스 위치의 포장 된 X 및 Y 좌표가 포함되어 있으며 위치가 투명 영역과 일치하는지 확인해야합니다.

이 예에서는 htcaption을 반환합니다. 즉,이 영역은 창의 캡션처럼 행동한다는 것을 의미합니다. 즉, 사용자는이 위치를 클릭하고 드래그하여 창을 드래그 할 수 있습니다. 보다 여기 다른 값을 반환 할 수있는 것과 의미

protected override void WndProc(ref Message m) {
    switch (m.Msg) {
    case 0x84: // this is WM_NCHITTEST
        base.WndProc(ref m);
        if ((/*m.LParam.ToInt32() >> 16 and m.LParam.ToInt32() & 0xffff fit in your transparen region*/) 
          && m.Result.ToInt32() == 1) {
            m.Result = new IntPtr(2);   // HTCAPTION
        }
        break;
    default:
        base.WndProc(ref m);
        break;
    }
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top