Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.05.2009, 19:31   #1
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию "Вечная проблема" - мерцание...

Человечество будет жить еще 10 000 лет...
Солнце будет жить около 2 млн лет...
Мерцание в Дельфи будет жить вечно...

Тема создавалась и обсуждалась много раз, но когда ничего не помогает все средства хороши.

Значит так:
Есть форма с кнопкой произвольной формы.
Есть массив данных:

00000000000000000000000000000000000 000000000
00000000000000000000000000000000000 000000000
00000000000000000000000000000000000 000000000
00000000000000001100000000000000000 000000000
00000000000000001110000000000000000 000000000
00000000000000001111001000000000000 000000000
00000000000011111111111110000000000 000000000 384 строк
00000000000000011111110000000000000 000000000
00000000000000000111100000000000000 000000000
00000000000000000000000000000000000 000000000
00000000000000000000000000000000000 000000000
00000000000000000000000000000000000 000000000

512 столбцов

(Массив "грузится" из текстового файла)

Теперь во время выполнения на ONMOUSEMOVE такая проверка:

If Mas[Round(X/2),Round(Y/2)] = 1 Then
{Рисуем новое изображение кнопки (картинка "при наведении")}

Так вот проблема в следующем:
При прорисовке кнопки проблем нет, но если дергать мышь туда-сюда (на границе кнопки), то изображение "подмигивает" пользователю. От этого мерцания не спасло ни CopyRect из буфера, ни Form1.DoubleBuffering:=TRUE, Ни рисование без стирания...

Может есть еще способы?
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 28.05.2009, 20:23   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Посмотрите вот эту темку, я там привел пример без мерцаний:
http://programmersforum.ru/showthread.php?t=43567
mihali4 вне форума Ответить с цитированием
Старый 29.05.2009, 10:31   #3
Neeter
Форумчанин
 
Аватар для Neeter
 
Регистрация: 22.02.2009
Сообщений: 875
По умолчанию

Попробуйте так:
Один раз создав кнопку, присвойте булевской переменной в секции private true
И там же проверяйте на это значение, кнопка будет создана один раз и не будет создаваться после, т.к. идет проверка на true переменной. Следовательно бесконечной прорисовки кнопки не будет при наведении на то же место мыши.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство.
Neeter вне форума Ответить с цитированием
Старый 29.05.2009, 15:00   #4
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Бесконечной прорисовки и так нет - я установил значение ISBFlag (I See Button Flag) булевского типа.
mihali4 Что-то я не нашел там фрагмент кода, где происходит рисование... Может плохо смотрел?
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
блок "cont" с права не принимает значение "margin: 10px;" которое описано в body tabikA HTML и CSS 5 24.02.2009 21:50
Под прикрытием "кризиса" наши доблестные "управители" хотят утопить нас в радиоактивных отходах mihali4 Свободное общение 1 17.01.2009 01:43
если пользователь наберет какой-то другой символ не "y" или "n" и нажмет enter, программа проигнорирует skobets Общие вопросы C/C++ 2 03.06.2008 06:51
Excel файл открывается не "до конца" (странички "не показываются" только серое поле) Dorvir Microsoft Office Excel 2 28.03.2008 10:03