Es gibt dazu fertige libs und auch Erklärungen. Beides findest du hier im Forum. Dazu gabs in letzter Zeit ziemlich viele threads.