Немного трудно объяснить, в чем я нуждаюсь, но я попробую:
Я должен записать приложение (winform), которая будет некоторым фильтром для отображения/другого форм позади него. За одним исключением - все позади формы должны взгляды, как кроме красного (например), окрашивают, которые должны быть заменены к любому другому указанному цвету, белому, например.
Поэтому давайте предположим, что я открыл окна Word с немногими строками текста. С красными и черными буквами. Таким образом, когда я помещаю свое приложение выше этого текста - это должно "отфильтровать" красные символы и заполнить их белому.
Таким образом, поскольку я понимаю эту задачу: я должен привязать область позади формы, затем обработать ее (цвета замены) и после того, как нарисуют это изображение на моем теле формы.
Какие-либо ссылки или ключевые слова для решения?
UPD:
таким образом - это - мое конечное решение:
спасибо за все ;-)
UPD 2: демонстрационный http://dl.dropbox.com/u/4486681/result.png
UPD 3: вот источники
вы можете создать снимок рабочего стола, используя следующий код:
public Bitmap CaptureScreen()
{
Bitmap b = new Bitmap(SystemInformation.VirtualScreen.Width, SystemInformation.VirtualScreen.Height);
Graphics g = Graphics.FromImage(b);
g.CopyFromScreen(0, 0, 0, 0, b.Size);
g.Dispose();
return b;
}
Замените размеры и положение координатами вашей формы. Таким образом вы получите растровое изображение того, что стоит за вашей формой. Затем вы можете выполнить замену цвета на этом растровом изображении.
Обратите внимание, что из-за таких настроек, как ClearType и других механизмов сглаживания, вы также должны учитывать «промежуточные пиксели» при замене цвета. Иначе все будет выглядеть забавно: -)
Я не знаю, можно ли это вообще сделать (посмотрим, что ответят другие :-).
Вы можете получить дескриптор контекста экранного устройства, который дает вам растровое изображение экрана.
HDC dc = GetDC (NULL);
(Это C ++, вам придется использовать P / Invoke или создать библиотеку смешанного режима на C ++)
Затем вы можете перерисовать область экран с вашим процессом фильтрации.
Теперь начинаются проблемы:
У вас может быть где-нибудь кнопка, которая на мгновение скрывает ваше собственное приложение и показывает его при повторном нажатии, а также фильтрует новый контент.
Удачи. Есть ли возможность поделиться пользовательским сценарием?