Всем салют!
Почти год назад создавал тему http://bbs.vbstreets.ru/viewtopic.php?f=1&t=56091 , но мало мне чем помогло.
И летом я, уже полгода спустя, в свободное время взялся за решение этой проблемы. И нашел универсальный способ. Заключался он в получении изображения текстового поля и поиска слов по этому изображению. И как следствие - их выделение.
Сия идея была реализована, но на BitBlt далеко не уедешь и я освоил CopyMemory и FillMemory, которые изрядно упростили код, но главную проблему так и не решили. FPS просто очень низкий! 6-8 кадров в секунду. Для меня это никуда не годится и к тому же там еще не мало побочных артефактов вылезает...
Внимание! Проект тестовый и все преобразования пока показываются в PictureBox! (Чего уж будет с текстовым полем!!8) )
Немного о том как работает программа:
1.Изображение очищается от всякого шума.
2.Копируется фоновое изображение (полоски строк)
3.Из изображения Текстового поля каждые строки текста складываются по высоте попиксельно оператором And. Тем самым создается миниобраз текстового поля с черными линиями всех слов! В проекте называется как Пиксельная карта (Pixel map).
4.Происходит поиск каждой черной полосочки в пиксельной карте и получая ее длину производится выделение слов.В проекте называется "Selector"
5.Отрисовываем все полученое с выделеными словами на PictureBox
И самое главное - Может кто нибудь поможет с данной реализацией?! Как увеличить фпс? Применить код на РичТекстБоксе?! Лагов не мало...
Данный исходник лишь демонстрация графического способа выделения слов: