2 / 2 / 2
Регистрация: 16.02.2014
Сообщений: 153
|
|
1 | |
Выделение произвольной области экрана для скриншота13.10.2020, 00:20. Показов 1882. Ответов 6
Метки delphi 10.3 (Все метки)
Здравствуйте!
Как правильно реализовать выделение произвольной области экрана? Делал скриншотер на основе этой статьи http://delphiexpert.ru/sozdani... elphi.html и столкнулся с проблемой мерцания формы, которая служит для выделения области. Как это можно устранить?(doublebuffered не помог) на всякий случай прикрепил проект, в нем оставлен только этот функционал (выделение области экрана) Ну или может есть какие то другие способы реализовать выделение произвольной области?
0
|
13.10.2020, 00:20 | |
Ответы с готовыми решениями:
6
Выделение области для скриншота Создание скриншота определенной области экрана Выделение произвольной области изображения Выделение определённой области экрана |
13.10.2020, 17:12 | 2 | |||||||||||||||||||||||||
Сообщение было отмечено CTAJIuH как решение
Решение
Зачем вы назвали главную форму как Form2, а дополнительную служебную как Form1? Переименуйте их обе нормально (чтоб вообще без циферок).
Зачем вы создаёте дополнительную служебную при инициализации, если не пользуетесь ею, а создаёте другую динамически? Добавлено через 3 минуты Вместо:
А мерцание из-за того что вы в событии движения мыши сначала делаете:
Но вот после этого вы зачем-то начинаете лезть в Canvas и даже что-то рисовать - так уже нельзя. Рисовать надо в OnPaint - который будет вызываться в рамках Repaint; , а не когда уже поздно.Добавлено через 3 минуты
1
|
2 / 2 / 2
Регистрация: 16.02.2014
Сообщений: 153
|
||||||
14.10.2020, 13:27 [ТС] | 3 | |||||
В процедуре FormMouseMove оставил только запоминание координат и reapint, код "рисования" перенес в OnPaint, но мерцание осталось.
0
|
Модератор
3629 / 2150 / 759
Регистрация: 15.11.2015
Сообщений: 8,631
|
|
14.10.2020, 16:22 | 4 |
Конечно останется, ведь, сначала заливается вся форма и затем прозрачным заливается только часть.
0
|
14.10.2020, 17:58 | 5 |
Возможно могут быть нюансы зависящие от версии Делфи/VCL. Но в любом случае теперь у вас должно работать DoubleBuffered.
Добавлено через 2 минуты Self. там зачем? Если убрать будет тож самое.
1
|
Модератор
3629 / 2150 / 759
Регистрация: 15.11.2015
Сообщений: 8,631
|
||||||
14.10.2020, 18:02 | 6 | |||||
Можно закрашивать серым области, которые стали непрозрачны, и закрашивать зелёным новую область, тогда не будет мерцать. Вот переделка, и переменные, которые добавил:
1
|
2 / 2 / 2
Регистрация: 16.02.2014
Сообщений: 153
|
|
15.10.2020, 02:06 [ТС] | 7 |
0
|
15.10.2020, 02:06 | |
15.10.2020, 02:06 | |
Помогаю со студенческими работами здесь
7
Выделение области экрана без перерисовки Получение скриншота экрана Сохранение скриншота выделенной области(?) Способы получения скриншота экрана Передача скриншота экрана (clientsocket) Снимок экрана - Отправка скриншота на почту Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |