Задать вопрос

Прямоугольник на прозрачной форме или прямо на экране

Пишу приложение на c# для захвата скриншота с рабочего стола. Понадобилось добавить возможность делать скриншот области рабочего стола. Для этого необходимо создать прямоугольное выделение такого плана:

Прямоугольник, залитый цветом, желательно с возможностью изменения размеров и перемещением.

Проблема: если в качестве прямоугольника создать форму с скрытыми границами и элементами управления то перемещение и изменение размеров я сделать могу, правда через задницу, но не знаю как при этом заблокировать доступ к рабочему столу вне прямоугольника. Если же создать сначала форму и развернуть её на весь экран а уже на ней рисовать прямоугольник то всё тормозит и сильно мерцает при изменении размеров и перемещении прямоугольника, к тому же у меня не получается сделать форму прозрачной так, чтобы прямоугольник оставался при этом видимым.

Очень нужна помощь!

Ещё раз что хочется:

1. Прямоугольное выделение
2. Создать выделение в стиле обычного windows выделения — щелкнули мышкой в нужной области, потянули мышку — создался прямоугольник, отпустили мышку — прямоугольник остался.
3. Рабочий стол вокруг прямоугольника должен быть недоступен, пока программа не сделает скрин.
4. В идеале фон вокруг прямоугольника сделать затененным а сам прямоугольник — прозрачной областью в затенении.

Плиз плиз плиз, мучаюсь 8 часов. На c# пишу ~20 часов =(
Чтение манов и гуглеж в рунете и буржунете не очень помог.
  • Вопрос задан
  • 4965 просмотров
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
Снимите скриншот, сделайте нормальную форму размером во весь экран без элементов управления (WindowStyleЧтоТоТакое=null), фоном в форму положите скриншот, а сверху рисуйте прямоугольник.
Ответ написан
@egorinsk
Форма не нужна. Надо создать окно, без рамки, со свойством всегда поверх, и со свойством (не помню, как оно называется), которое в WinAPI включает offscreen rendering для окна, позволяет его делать полупрозрачным, и т.д. Изменять размеры и таскать окно, вручную ловя события и обрабатывая.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы