|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
24.05.2013, 01:01 | #1 |
Пользователь
Регистрация: 16.11.2012
Сообщений: 17
|
Движение прямоугольника вместе с мышкой
Вопрос, думаю, очень легкий, но прошу мне помочь, не могу ни как разобраться.
Есть компонент PaintBox, на котором размещена картинка. Нужно сделать, чтобы при передвижении указателя мышки по пэнинтбоксу вместе с ним и двигался прямоугольник, например, зеленый 40х40. У меня проблема возникает в том, что при передвижении указателя нужно рисовать новый прямоугольник и стирать старый, но чтобы весь рисунок не перерисовывать, так как приложение подвисает. Рисовать прямоугольник пытался с помощью канвы... |
24.05.2013, 08:08 | #2 |
Форумчанин Подтвердите свой е-майл
Регистрация: 01.12.2006
Сообщений: 514
|
http://delphiworld.narod.ru/base/draw_mouse_box.html
немного переделать код, точнее взять идею
Пишу на Delphi за еду
|
24.05.2013, 08:25 | #3 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Ссылку Тохи не смотрел, но на всякий случай:
Код:
I'm learning to live...
|
24.05.2013, 10:10 | #4 |
Форумчанин Подтвердите свой е-майл
Регистрация: 01.12.2006
Сообщений: 514
|
вариант от Stilet не катит, ибо он перерисовывает весь PaintBox1
Пишу на Delphi за еду
|
24.05.2013, 10:24 | #5 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Присмотрись и найди в нем команды перерисовки всего компонента. Другое дело что автору стоит указать точнее как он размещал картинку. Я бы на его месте перерисовывал вместе с картинкой.
I'm learning to live...
|
|
24.05.2013, 10:42 | #6 |
Форумчанин Подтвердите свой е-майл
Регистрация: 01.12.2006
Сообщений: 514
|
Код:
я для примера протестил твой код, только перед этим нарисовал на PaintBox1 свой рисунок, и как только навел мышку на PaintBox1, все мое творение пропало, т.е. надо снова рисовать, это разве не перерисовка?
Пишу на Delphi за еду
|
24.05.2013, 12:22 | #7 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,426
|
Для справки: PaintBox в любом случае весь перерисовывается сам. Надо же обновить содержимое.
|
24.05.2013, 12:37 | #8 | |
personality
Старожил
Регистрация: 28.04.2009
Сообщений: 2,882
|
Цитата:
У Stilet действительно перерисовка. Предлагаю подход с обычной двойной буфферизацией: Создать 2 битмапа, в один загрузить картинку (он вообще никогда не будет меняться), во второй тоже загрузить (он будет буфферным изображением, первичная загрузка нужна для уставноки размеров). При смещении мышки передать координаты в функцию рисовки, в которой на второй битмап нарисовать первый, потом нарисовать на второй битмап прямоугольник по нужным координатам, потом второй битмап одним Draw нарисовать на пейнтбокс. Мерцать не будет. |
|
24.05.2013, 13:35 | #9 | |
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
Цитата:
1. Перерисовка в самом PaintBox'е. По сути нужно перерисовывать весь PaintBox, но тут существует масса вариантов оптимизации, которые имеет смысл использовать. Преимущества: рисуем и перемещаем то, что нужно, и так, как нужно. Недостатки: рисунок не может выйти за пределы PaintBox'а. 2. Создаем отдельное окно нужного цвета и с нужным рисунком и именно его таскаем за мышкой. Преимущества: может выходить за пределы PaintBox'а. Недостатки: перемещается посредством WinAPI, поэтому не всегда можно сделать именно то, что хочется. |
|
24.05.2013, 17:46 | #10 | |
Пользователь
Регистрация: 16.11.2012
Сообщений: 17
|
Цитата:
1. Как перерисовывать только кусок? У меня получается перерисовывать только весь ПэинтБокс и так как перерисовка очень частая, изображения почти не видно. 2. Если создать отдельное окно, то событие по движению мышки уже происходит на этом окне, а не пэинт боксе. То есть нужно чтобы окно было всегда вокруг мышки. |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Движение камеры мышкой | pufystyj | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 3 | 19.01.2012 23:19 |
планое движение картинки за мышкой | Верика | JavaScript, Ajax | 1 | 29.06.2010 19:52 |
Загрузить библиотеку вместе сразу вместе с программой | Anekdot | Общие вопросы Delphi | 4 | 26.01.2010 23:14 |
Задача в Delphi(движение за мышкой) | Angelly | Помощь студентам | 5 | 22.09.2009 13:12 |
Движение текста вместе с автофигурой | Sleepwalker | Microsoft Office Excel | 2 | 13.12.2006 12:35 |