Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

Ответ
 
Опции темы
Старый 28.05.2009, 19:31   #1
Alex Cones
Trust no one.
Профессионал
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Адрес: In the middle of nowhere.
Сообщений: 6,524
Репутация: 1440
По умолчанию "Вечная проблема" - мерцание...

Человечество будет жить еще 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,198
Репутация: 2661
По умолчанию

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

icq: 583715699
По умолчанию

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

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

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

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


20:56.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru