Вообще-то уткой с джостика можно было управлять всегда! Всё своё детство я, пока брат стрелял из пистолета, уводил от него уток при помощи джостика №2.
Думаю, вам нужно изучить Direct 3D, чтобы это работало без лагов. Канва тормозит не только в Delphi, недаром игры ее не используют и для них придумано производительное решение ;)
GDI+ не использует ускорение графическим адаптером (за исключением некоторых функций типа BitBlt и то только Win Vista и старше), а значит оно априори не может быть быстрым.
Дело даже не сколько в тормозах, сколько в том, как узнать когда картинка полностью сформирована и выведена на экран. Сейчас у меня прикручен довольно быстрый 2Д движок на OpenGL. Показатель FPS там может достигать нескольких сотен кадров в секунду, но частота монитора 60ГЦ => следовательно если я нечего не путаю, множество кадров просто не успеет отобразится на мониторе, и если этими кадрами окажутся контрольные, то программа не будет работать.
Я всегда думал — да как же эти пистолеты устроены то? Как игровая приставка «понимает» куда я стреляю? Но все руки не доходили поискать. Опять информация нашла меня сама. Как говорится: все гениальное — просто!
Подключение светового пистолета через Arduino