![]() |
|
Модераторы: Snowy, Alexeis, MetalFan |
![]()
|
|
| murod |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 113 Регистрация: 17.9.2005 Где: Uzbekistan/Tashke nt Репутация: нет Всего: 4 |
Всем Привет!
Такая вот задача: Надо сделать програмку типа Paint. Но он будет рисовать на рабочем столе или поверх других окон. Сама Программа занимает верхную область рабочего стола. Там будет только панель инструментов(тип линии, цвет заливки, Ластик, квадрат...). Рисовать получается. Но вот, как очистить определенную область, например маленкий квадрат? Как сделать Ластик как на Paint. Ясно что на Paint нету заднего фона там можно просто очишать белым или рисовать белый квадрат. А как поступить в моем случаи? Ведь у меня задний фон не белый а там стоит рабочий стол. Первое в голову приходит как то обновить маленький регион рабочего стола. Но не получается. Когда обнавляю регион вместо него рисуется белый квадрат. Здесь запутался, дальше не идет. Посоветуйте хоть что. рисую примерно так:
стираю так:
Заранее всем спасибо. --------------------
Люди всего мира берегите природу! |
||||
|
|||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 55 Всего: 459 |
А почему бы не стирать просто рисуя белый квадратик?
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| nmn |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 593 Регистрация: 26.11.2005 Репутация: нет Всего: 1 |
а как ты собираешься стирать? восстанавливать то что было раньше? тогда можешь сделать себе фотографию экрана и потом из нее восстанавливать "испорченный" участок
Добавлено через 1 минуту и 49 секунд и еще IvalidateRect необходимо передавать не дескриптор контекста а дескриптор окна |
|||
|
||||
| murod |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 113 Регистрация: 17.9.2005 Где: Uzbekistan/Tashke nt Репутация: нет Всего: 4 |
Alexeis, если буду стирать белым квадратиком то у меня задний фоном является рабочий стол, мне надо очистить только то что нарисовал. И при этом задним фоном должно быть рабочий стол. По проше у меня как бы два слоя. 1-слой это рабочий стол. 2-слой это то что я рисую. Если смогу обновить прямоугольную область экрана то у меня 2-слой отстирается а 1-слой обновится(windows автоматически перерисует прямоугольную область экрана) вот тогда бы получился ластик.
nmn,
Это для частных случаев может подойдет, когда у меня статический обычны рабочий стол. Если на рабочем столе будет проигрыватся видео файл(Media player) то тогда я не смогу правильно обновить экран. Мне просто нужна функция обновления указанной области экрана, типа IvalidateRect().
это действительно может помочь. я не правильно обновлял. Попробую IvalidateRect() передать хендл окна под указателем мышки а не контекст устройства. --------------------
Люди всего мира берегите природу! |
||||
|
|||||
| murod |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 113 Регистрация: 17.9.2005 Где: Uzbekistan/Tashke nt Репутация: нет Всего: 4 |
нет неработает, не обновляется.
Я поставил ловушку на мыш. обрабатываю события мыши и поним рисую, стираю. вот код ловушки и как стираю.
Посмотрите может еще где делаю не правильно, Это сообщение отредактировал(а) murod - 15.7.2007, 20:20 --------------------
Люди всего мира берегите природу! |
|||
|
||||
| nmn |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 593 Регистрация: 26.11.2005 Репутация: нет Всего: 1 |
вроде InvalidateRect не вызывает перерисовки, а только при добавляет к перерисовываемой области прямоугольник
Добавлено через 5 минут и 14 секунд а если окно не перекрывается другими окнами и не выходит за пределы экрана то и сообщение WM_PAINT не присылается, отсюда вывод - шли сам или вызывай UpdateWindow. Может проще сделать фотографию и рисовать на ней? |
|||
|
||||
| bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 1 Всего: 88 |
попробуй рисовать на прозрачном слоистом окне во весь экран
-------------------- Обижено школьников: 8 |
|||
|
||||
| murod |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 113 Регистрация: 17.9.2005 Где: Uzbekistan/Tashke nt Репутация: нет Всего: 4 |
bems, можно подробней ? если не трудно, приведи маленький пример.
--------------------
Люди всего мира берегите природу! |
|||
|
||||
| bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 1 Всего: 88 |
вот примерчик
Добавлено через 4 минуты и 2 секунды недостатки: - окно иногда "проваливается" под панель задач (но в большей части экрана все в порядке) - рисовать можно не всеми цветами (т. к. один зарезервирован под прозрачность) -------------------- Обижено школьников: 8 |
|||
|
||||
| murod |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 113 Регистрация: 17.9.2005 Где: Uzbekistan/Tashke nt Репутация: нет Всего: 4 |
bems, Спасибо большое. Так и буду делать. Только как то мне надо будет чтобы этот окно стояла поверх Панели задач, что бы не проваливался. Этим думаю можно разобратся.
--------------------
Люди всего мира берегите природу! |
|||
|
||||
![]()
|
| Правила форума "Delphi: Звук, графика и видео" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делится вскрытыми компонентами
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |