Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.10.03;
Скачать: [xml.tar.bz2];

Вниз

Интересная задачка! Делаем движение курсор мыши ПЛАВНЫМ   Найти похожие ветки 

 
Igor1   (2002-09-23 11:06) [0]

Hi,

Год назад поменял монитор на ЖК, у которых частота обновления экрана ограничена 60 или 75 Hz.
Никаких неудобств это не доставляет, т.к. экран у LCD не мерцает, но
вот 60 Hz недостаточно для плавной отрисовки курсора мыши. Ведь обычно
мышь PS/2 или USB имеют частоту опроса 100 или 125 герц, поэтому на ЖК
мониторах многим не нравится дерганное движение курсора, в отличие от
обычных ЭЛТ мониторов где частота разверстки 85..100 Hz и более.
Поэтому мне пришла идея сделать искусственную интерполяцию движения
мыши и дорисовывать "недостающие" фазы перемещения мыши. Попробовал
поискать аналоги, но ничего не нашел. Поэтому написал небольшой
тестовый пример, который на мой взгляд визуально делает движение мыши
даже при 60 Hz значительно плавнее, за счет отрисовки дополнительно
двух фаз, на каждое перемещение курсора по экрану. Хотя у меня не всегда
правильно определяются интерполированные позиции курсора.
Отрисовку липовых курсоров сделал так: беру форму и через регион
делаю ее форму как раз под курсор, далее по BitBlt вывожу курсор.
Для меньших визуальных глюков под XP задействовал функцию придания
полупрозрачности этим окнам-курсорам (но для быстрого вывода это
требует карты nVidia/Ati с новыми драйверами, иначе тормозит)

Хотел написать эту утилиту как freeware, но не хватает здоровья и
времени, а также знания чтобы доделать качественный вывод
интерполированных курсоров, - требуется дописать перехват мыши через
хуки, а также под XP воспользоваться возможностью вывода апаратных
32-bit курсоров хоть с альфа-блендигом - что полностью разгрузит CPU и
устранит возможнные визуальные глюки. Также извлекать хендл текущиго
курсора, и отслеживать его смену.

Поэтому выкладываю программу и исходники
http://www.wnsoft.com/Sources_SmoothCursor.zip (19 KB)
// закоментарен кусок кода для придания полупрозрачности - можно включить под XP

http://www.wnsoft.com/SmoothCursor_XP.exe (150 Kb)
// вариант для WinXP. для скорости нужен свежий Detonator

http://www.wnsoft.com/SmoothCursor_9x.exe (150 Kb)
// вариант для Win9x и WinXP

Не забудьте скачать еще файл временного курсора:
http://www.wnsoft.com/cur.bmp (1 Kb) и положить в корень диска C:\


Буду рад, если кто-нибудь сможет доработать или написать аналогичный
продукт freeware или shareware и даст мне регистрационный ключик
на финальную версию :)

Или если никому эта идея не нужна, то хотя бы подскажите, как написать вывод дополнительных полноценных курсоров в Windows?

p.s. опция шлейфа в Windows - совсем не это - она только подсвечивает предыдущие позиции курсора на экране, в нашем же случае никого шлейфа не должно быть видно.


p.p.s. но я просто балдею, насколько великолепно плавно даже при 100 Hz
моего второго ЭЛТ LG Flatron 17" становится движение мыши с этой утилитой!


Igor Kokarev, WnSoft Inc.
Member of Association of Shareware Professionals (ASP)
igor@wnsoft.com
http://www.wnsoft.com


 
REA   (2002-09-23 12:19) [1]

А может стандартный драйвер мышиный переписать проще?
Или встроиться в цепочку драйверов. Сам не делал - может и глупость сказал.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2002.10.03;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.007 c
14-8111
DeepProg
2002-09-06 17:20
2002.10.03
Delphi studing


1-7993
Алина
2002-09-20 19:39
2002.10.03
Удалить двойные файлы


1-8012
pvasya
2002-09-21 09:51
2002.10.03
waveOutGetVolume


3-7795
АндрейП
2002-09-11 19:03
2002.10.03
Индексирование Lookup-поля ...


3-7806
777
2002-09-11 17:09
2002.10.03
ctDynamic





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский