![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы
![]() |
Поиск в этой теме
![]() |
![]() |
#1 |
Пользователь
Регистрация: 16.11.2012
Сообщений: 17
|
![]()
Вопрос, думаю, очень легкий, но прошу мне помочь, не могу ни как разобраться.
Есть компонент PaintBox, на котором размещена картинка. Нужно сделать, чтобы при передвижении указателя мышки по пэнинтбоксу вместе с ним и двигался прямоугольник, например, зеленый 40х40. У меня проблема возникает в том, что при передвижении указателя нужно рисовать новый прямоугольник и стирать старый, но чтобы весь рисунок не перерисовывать, так как приложение подвисает. Рисовать прямоугольник пытался с помощью канвы... |
![]() |
![]() |
![]() |
#2 |
Форумчанин Подтвердите свой е-майл
Регистрация: 01.12.2006
Сообщений: 514
|
![]()
http://delphiworld.narod.ru/base/draw_mouse_box.html
немного переделать код, точнее взять идею
Пишу на Delphi за еду
|
![]() |
![]() |
![]() |
#3 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]()
Ссылку Тохи не смотрел, но на всякий случай:
Код:
I'm learning to live...
|
![]() |
![]() |
![]() |
#4 |
Форумчанин Подтвердите свой е-майл
Регистрация: 01.12.2006
Сообщений: 514
|
![]()
вариант от Stilet не катит, ибо он перерисовывает весь PaintBox1
Пишу на Delphi за еду
|
![]() |
![]() |
![]() |
#5 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]() Цитата:
Присмотрись и найди в нем команды перерисовки всего компонента. Другое дело что автору стоит указать точнее как он размещал картинку. Я бы на его месте перерисовывал вместе с картинкой.
I'm learning to live...
|
|
![]() |
![]() |
![]() |
#6 |
Форумчанин Подтвердите свой е-майл
Регистрация: 01.12.2006
Сообщений: 514
|
![]() Код:
я для примера протестил твой код, только перед этим нарисовал на PaintBox1 свой рисунок, и как только навел мышку на PaintBox1, все мое творение пропало, т.е. надо снова рисовать, это разве не перерисовка?
Пишу на Delphi за еду
|
![]() |
![]() |
![]() |
#7 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,434
|
![]()
Для справки: PaintBox в любом случае весь перерисовывается сам. Надо же обновить содержимое.
|
![]() |
![]() |
![]() |
#8 | |
personality
Старожил
Регистрация: 28.04.2009
Сообщений: 2,899
|
![]() Цитата:
У Stilet действительно перерисовка. Предлагаю подход с обычной двойной буфферизацией: Создать 2 битмапа, в один загрузить картинку (он вообще никогда не будет меняться), во второй тоже загрузить (он будет буфферным изображением, первичная загрузка нужна для уставноки размеров). При смещении мышки передать координаты в функцию рисовки, в которой на второй битмап нарисовать первый, потом нарисовать на второй битмап прямоугольник по нужным координатам, потом второй битмап одним Draw нарисовать на пейнтбокс. Мерцать не будет. |
|
![]() |
![]() |
![]() |
#9 | |
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
![]() Цитата:
1. Перерисовка в самом PaintBox'е. По сути нужно перерисовывать весь PaintBox, но тут существует масса вариантов оптимизации, которые имеет смысл использовать. Преимущества: рисуем и перемещаем то, что нужно, и так, как нужно. Недостатки: рисунок не может выйти за пределы PaintBox'а. 2. Создаем отдельное окно нужного цвета и с нужным рисунком и именно его таскаем за мышкой. Преимущества: может выходить за пределы PaintBox'а. Недостатки: перемещается посредством WinAPI, поэтому не всегда можно сделать именно то, что хочется. |
|
![]() |
![]() |
![]() |
#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 |