Dead Ghost |
Отправлено: 31.03.2004, 18:41 |
|
Не зарегистрирован
|
В мене така проблема: є програма, в якій є 4 Imag'a. Вони по черзі збільшуються в розмірах на Х по ширині i Y по висоті, і повертаються в початковий стан (до попередніх розмірів). Під NT все працює нормально: картинка збільшилась, потім — зменшилась. Під XP: картинка збільшилась і !не зменшилась! точніше її не перемалювало, як я розумію, в початковий стан після стирання попереднього збільшеного варіанта? Як можна позбутись такого "щастя"? |
|
klen |
Отправлено: 01.04.2004, 00:31 |
|
Машинист паровоза
Группа: Участник
Сообщений: 239
|
Дорогой брат, друг и товарищ, я херово по украински прнял че ты хочешь. Попробуй написать понятнее и лучше кусок кода положи, а мы тут попробуем разобратся с твоей бедой. Нихера не понял, если честно.. |
|
Gedeon |
Отправлено: 01.04.2004, 14:09 |
|
Ветеран
Группа: Модератор
Сообщений: 1742
|
У меня вроде с украинским лады, но тока я сам с третьего прочтения понял что нужно. Приведите код иначе какого вы ответа ждете?
|
|
Guest |
Отправлено: 01.04.2004, 19:20 |
|
Не зарегистрирован
|
To gedeon : код простий як двері, чому я його зразу не привів. Вибачаюсь за недорозуміння з викладом суті проблеми.
Приведу код програми
CODE |
Form1->Image1->Top-=20;
Form1->Image1->Left-=20;
Form1->Image1->Height+=40;
Form1->Image1->Width+=40;
Delay(2000); //Власна функція
Form1->Image1->Top+=20;
Form1->Image1->Left+=20;//повернення до початкових координат
Form1->Image1->Height-=40;
Form1->Image1->Width-=40;//повернення початкового розміру
SendMessage(Form1->Handle, WM_IMAGE1,0,0);//Посилка повідомлення формі на зупинку потоку
|
При поверненні початкового розміру на формі змін не відбувається, бо збільшена картинка не стирається.
Пробував робити копію Form1->Canvas і потім відновлювати вигляд форми по збережоному "правильному" вигляді, але нічого не вийшло |
|
Gedeon |
Отправлено: 02.04.2004, 10:57 |
|
Ветеран
Группа: Модератор
Сообщений: 1742
|
Ну из того куска который вы привели, а это собственно изменение размера и координат Image1?, все прекрасно работает. Что такое функция Delay(), что выпоняет поток? Не уменьшиться картинка бы могла если где-то вы бы присвоили свойству AutoSize true, но тогда это было бы под всеми OS. Такие свойство Image как top, left, width & height работают прекрасно под всеми OS проблема где-то в другом месте.
|
|
Asher |
Отправлено: 02.04.2004, 13:01 |
|
Мастер участка
Группа: Модератор
Сообщений: 550
|
Привет.
Координаты лучше задавать все разом, через
Form1->Image1->BoundsRect = Rect(новые координаты);
Ну и не забывай после изменений делать Form1->Update();
или Form1->Refresh();
|
|
Dead Ghost |
Отправлено: 05.04.2004, 16:57 |
|
Не зарегистрирован
|
Я вирішив проблему через Form1->Repaint().
Але все таки загадка : чому під NT працює, а 2000 і XP дають глюк? |
|
Asher |
Отправлено: 05.04.2004, 17:36 |
|
Мастер участка
Группа: Модератор
Сообщений: 550
|
В Win некоторые из системных функций(напр TextOut) могут вызывать цикл обработки сообщений.
Возможно в новых версиях 2K и XP это дело съоптимизировали до такой степени, что теперь пинок требуется.
|
|