Вам нужно обработать 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;
}
}