C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Перемещение компонента TImage
BEERZONE
Отправлено: 12.06.2006, 21:53


Ученик-кочегар

Группа: Участник
Сообщений: 21



В процессе выполнения программы перемещаю Image по форме мышью, а эта ##### моргает. Как с этим бороться?
Konstantine
Отправлено: 13.06.2006, 08:14


Мастер участка

Группа: Модератор
Сообщений: 545



возможно если у Вас загружен сжатый рисунок (GIF, JPEG) — загружать как BMP...
а как перемещаете?
BEERZONE
Отправлено: 13.06.2006, 21:05


Ученик-кочегар

Группа: Участник
Сообщений: 21



Загружаю из .res файла Image1->Picture->Bitmap->LoadFromResourceName((int)HInstance,"myImage"); Перемещаю может быть глупо, но как могу:-)

On MouseDown(...)
{
// Узнаю координаты нажатия мыши на Image
Xcl=X;
Ycl=Y;
}
//-----------------------------
On MouseMove (...)
{
Image1->Top=Image1->Top+Y-Ycl;
Image1->Left=Image1->Left+X-Xcl;
}
ShibaOn
Отправлено: 01.07.2006, 10:08


Дежурный стрелочник

Группа: Участник
Сообщений: 37



На OnCreate родителю Image ставить свойство DoubleBuffered

CODE

Image1->Parent->DoubleBuffered = true;
Doga
Отправлено: 03.07.2006, 17:23


Мастер участка

Группа: Участник
Сообщений: 575



Может быть поможет Application->ProcessMessages() в событии OnMouseMove (...), сразу после изменения положения картинки.

А положение картинки лучше менять за один раз, а не за два, с помощью вроде как SetWindowPlacement(...) — так будет меньше перерисовок... Если конечно картинка лежит на какой нить панели, и именно эта панелька перемещается. Иначе это не пройдёт т.к. ТImage не имеет Handle. А пройдет ТImage->SetBounds(...);

Отредактировано Doga — 03/07/2006, 19:01

Вернуться в Вопросы программирования в C++Builder