Vývoj pro Microsoft Surface


Posledních pár dní jsem měl to štěstí, že jsem mohl vyvíjet nějaké menší aplikace pro Microsoft Surface, o kterém jsme nedávno psali. Bohužel Surface (ani SDK, ve kterém je jeho simulátor) nejsou volně dostupné. Proto píšu tento příspěvek, abych ukojil zvědavost zvědavých. Takže první dva poznatky:

  1. Vyvíjet pro Surface je radost a krása
  2. Ale bolí od toho záda

Vývoj je možný na dvou platformách – XNA pro pokročilé 3D vizualizace anebo typičtěji WPF aplikace pro všechno ostatní. Zůstaneme tedy u WPF. Standardní WPF umí reagovat na události od klávesnice a myši. Přidáním příslušné knihovny pro Surface získáte též události typu Contact, tj. dotek něčeho s plochou. To něco může být buď prst anebo identifikační tag (představte si čárový kód). U kontaktu máte k dispozici řadu údajů – souřadnice X a Y, orientaci (azimut), jednoznačný GUID identifikující dotyk apod.

Abyste nemuseli dělat reakce na tyto události všude sami, je součástí knihoven též sada ekvivalentních ovládacích prvků. Např. prvek SurfaceListBox dědí z prvku ListBox a navíc implementuje standardní rozhraní IContactInputElement, kde v implementaci reaguje na příslušné doteky (událost ContactDown, vlastnost ContactsOver apod.)  a převádí je na standardní akce (např. výběr položky).

Kromě toho jsou k dispozici speciální ovládací prvky pro Surface, zejména ScatterView , do kterého můžete vkládat kontejnery nazvané ScatterViewItem – do těch pak můžete vložit cokoliv – fotky, videa, vlastní formuláře apod. Automaticky pak dostanete funkce přesouvání, otáčení, zvětšování a zmenšování apod. Kromě toho můžete použít i řadu “služebních” tříd, například na základní fyziku manipulací, zobrazení dotykové klávesnice, interakci se Surface Shell aplikací apod.

Tak snad se Vám také někdy poštěstí…

Michael


Comments (13)

  1. Mě by zrovna zajímal ten vývoj prostřednictvím XNA :) Liší se v něčem vývoj přes XNA pro Surface od vývoje pro PC a XBOX nebo tak jsou nějaké specialitky? Plánuje se do XNA speciální podpora pro Target jménem Surface?

  2. vyvojar says:

    V XNA se neorientuji, ale tipuji, ze je to stejny vyvoj jako pro PC a neni tam specialni target (Surface je Windows Vista s par knihovnami navic). Jenom muzete obsluhovat nove udalosti, ktere na PC nemate…

  3. Tomas Jecha says:

    Celé to má to jeden háček – 99% smrtelníků se k onomu stolečku nikdy nedostane nedostane. Škoda.

  4. Tomas Jecha says:

    Celé to má to jeden háček – 99% smrtelníků se k onomu stolečku nikdy nedostane nedostane. Škoda.

  5. Tomáš Jecha: Pokud vím, tak cílem autorů Surface je dostat ten stolek (nebo jeho následníka) za pár let i do domácností. Vzhledem k povaze toho zařízení si dovedu snadno představit, že se dostane jednou na cenu kolem 40 – 50 tisíc Kč, možná i méně. Pak by to již nebyl problém pro některé domácnosti, ale stejně tak ani pro spoustu firem, hotelů, kaváren apod.

    Nicméně je faktem, že v současnosti je to stále velice exkluzivní produkt za relativně exkluzivní cenu…:-)

  6. Tomas Jecha says:

    Vojtěch Vít: Já si nejsem úplně jistý, jestli je tento hardware do budoucna určen pro domácí využití. Zatím (a i v blízké budoucnosti) bych si ho dokázal představit jen jako frajeřinku pro firmy.

    Ale až bude stát do 40ti tisíc, bude mít několik podob (nepraktický nízký stoleček není nic moc) a dokáže být opravdu "k něčemu", pak začnu slintat a půjdu rozbít prasátko. :)

  7. Ondřej says:

    Nějak mi není jasné co tedy to Surface přesně je. Je to nějaké softwarové řešení v podobě rozšíření operačního systému jako je například Windows XP Tablet PC Editon, nebo je to vyloženě závislé na hardwaru toho stolečku?

  8. vyvojar says:

    Je to vicemene oboji. Surface obsahuje pocitac s Windows Vista. Krome toho je to ale HW zarizeni s 5ti kamerami, snimajicimi povrch stolu, pripojene k onomu pocitaci. Na Viste bezi proces, ktery analyzuje ziskany obraz a generuje z nej prislusne udalosti (napr. ContactAdded), ktere predava WPF aplikacim na Surface bezicim.

  9. Ondřej says:

    Tak jinak. Bude ten hardware – k Surface potřebný – výhradně Microsoftí záležitost, nebo to budou moct implementovat i jiní výrobci hardware?

  10. vyvojar says:

    Podle všech indicií to vypadá, že Surface bude šířen jedině pod značkou Microsoft (podobně jako třeba XBox). Vyrábět ho bude určitě nějaký dodavatel, ale to se zákazník nedozví.

  11. Ondřej says:

    Ještě poslední dotaz: Bude to Surface podporovat i klasické Windows Forms aplikace nebo jen tu WPF zrůdnost?

  12. vyvojar says:

    Teoreticky je to mozne, ale v praxi pochybuji. WinForms uzivatelske rozhrani nelze z principu veci rotovat pripadne skalovat, cimz se na Surface stavaji problematicky pouzitelne.

    Navic byste si musel reakci na doteky dopisovat i do standardnich ovladacich prvku typu Button nebo TextBox (ve WPF to napsal nekdo za vas).

  13. iecz says:

    to Ondřej: WPF není úplně od věci. Aplikace pro Surface, jsou poněkud jiné než pro běžné PC. Ne z pohledu programátora, ale z pohledu designu a způsobu ovládání. WPF dává programátorovi možnosti takové aplikace vytvářet. Ve WinForm by to šlo významně obtížněji. Navíc jde často o scénáře, pro které winForms nebyly navrženy, zatímco WPF ano. Může jít např. o nedostruktivní zoom či jiné geometrické transformace. Nemluvě o integraci multimédií. Tam by jste musel sáhnout do DirectX. Pochybuji, že převážné většině programátorů by se do toho chtělo.

    to Ondřej: ano, HW pravděpodobně bude z dílen MS (tedy značka). Částečně však multi-touch na stejném pricipu bude dostupná ve Windows 7 s multi-touch obrazovkou.