Прямоугольник на прозрачной форме или прямо на экране
Пишу приложение на c# для захвата скриншота с рабочего стола. Понадобилось добавить возможность делать скриншот области рабочего стола. Для этого необходимо создать прямоугольное выделение такого плана:
Прямоугольник, залитый цветом, желательно с возможностью изменения размеров и перемещением.
Проблема: если в качестве прямоугольника создать форму с скрытыми границами и элементами управления то перемещение и изменение размеров я сделать могу, правда через задницу, но не знаю как при этом заблокировать доступ к рабочему столу вне прямоугольника. Если же создать сначала форму и развернуть её на весь экран а уже на ней рисовать прямоугольник то всё тормозит и сильно мерцает при изменении размеров и перемещении прямоугольника, к тому же у меня не получается сделать форму прозрачной так, чтобы прямоугольник оставался при этом видимым.
Очень нужна помощь!
Ещё раз что хочется:
1. Прямоугольное выделение
2. Создать выделение в стиле обычного windows выделения — щелкнули мышкой в нужной области, потянули мышку — создался прямоугольник, отпустили мышку — прямоугольник остался.
3. Рабочий стол вокруг прямоугольника должен быть недоступен, пока программа не сделает скрин.
4. В идеале фон вокруг прямоугольника сделать затененным а сам прямоугольник — прозрачной областью в затенении.
Плиз плиз плиз, мучаюсь 8 часов. На c# пишу ~20 часов =(
Чтение манов и гуглеж в рунете и буржунете не очень помог.
Снимите скриншот, сделайте нормальную форму размером во весь экран без элементов управления (WindowStyleЧтоТоТакое=null), фоном в форму положите скриншот, а сверху рисуйте прямоугольник.
Как я писал я уже пытался делать прямоугольник на форме во весь экран — жутнейшим образом тормозило и мерцало во время изменения размеров и перемещении. Возможно нужно что-то допилить? doublebuffering у формы стоял.
Я, если честно, не помню, как это происходит в winforms. Сейчас на WPF накидал тестовый проект (без снятия скриншота и четыре слайдера вместо драга выделения мышью) — всё работает нормально, не мерцает и не тормозит. dl.dropbox.com/u/3710015/WpfApplication1.zip
Форма не нужна. Надо создать окно, без рамки, со свойством всегда поверх, и со свойством (не помню, как оно называется), которое в WinAPI включает offscreen rendering для окна, позволяет его делать полупрозрачным, и т.д. Изменять размеры и таскать окно, вручную ловя события и обрабатывая.