Выделение слов в RichTextBox (графический способ)

Работа с 2D и 3D графикой, видео, звуком.

Модератор: Mikle

Don Leno
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 421
Зарегистрирован: 13.10.2013 (Вс) 14:05

Выделение слов в RichTextBox (графический способ)

Сообщение Don Leno » 05.01.2018 (Пт) 21:25

Всем салют!
Почти год назад создавал тему 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

И самое главное - Может кто нибудь поможет с данной реализацией?! Как увеличить фпс? Применить код на РичТекстБоксе?! Лагов не мало...

Данный исходник лишь демонстрация графического способа выделения слов:
У вас нет доступа для просмотра вложений в этом сообщении.

Вернуться в Мультимедиа

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 33

    TopList