Elvégzendő feladat

Hello!

A feladatom az elkövetkezendő 1 évben létrehozni egy Parkolóőr alkalmazást .Net alapokon.

Az első lépések a program által használt technológiák megismerése, amelyek a következőek:

Azure:
–       sql azure
–       web role

Silverlight (wp7):
–        layout
–        control
–        animations
–        térkép
–        push notification

WCF:
–          konfigrálás
–          egy, több irányú kapcsolat
–          ASP.NET-ben WCF használat
–          egyedi tipus küldése
–          hiba kezelés

Elsőként az Azure-ral ismerkedem meg, amellyel a következő postban találkozhattok.

Első feladatok – Silverlight

Az elmúlt 3-4 hét történései.

 

A Silverlight könyvet kellett röviden áttekintenem, illetve az alábbi témakörökre nagyobb figyelmet kellett szentelnem:

  • Alkalmazás életciklusa
  • Fejlesztői környezet beállítása
  • Mvvm tervezési minta
  • Animációk
  • Képek kezelése (controllok)
  • Layout vezérlők

Ezen témakörök nagy része megtalálható volt a Silverlight könyvben.

 

Az egyes témakörökről pár lényeges mondat:

  •  Alkalmazás életciklusa

A Windows 8-nál a Metro alkalmazások életciklusa nagymértékben különbözik a megszokott, hagyományos alkalmazásokétól. A lehető legjobb felhasználói élmény biztosításának érdekében az alkalmazások életciklusa feletti hatalmat a Microsoft kivette a felhasználók kezéből, és inkább a rendszer szerves részévé tette.

  • Fejlesztői környezet beállítása

A fejlesztői környezet olyan programozási eszközök, könyvtárak és beállítások csoportja, melyekkel a szoftverfejlesztés során a felhasznált programozási nyelven, vagy nyelveken létrehozott forráskódokat futás kész állapotba lehet hozni és azt tesztelni. Ez jelentheti a fordítást, vagy nem önálló programok futtatási környezetbe helyezését. Mindkét esetben a környezet általában tartalmazza a futtatókörnyezetet is a tesztelés miatt.

  • Mvvm tervezési minta
    • A Mode-View-ViewModel architektúrális mintát a prezentációs rétegben célszerű bevezetni. Ennek segítségével alkalmazásunk felhasználói felülete tesztelhető, karbantartható lesz, és jelentősen egyszerűsíti a fejlesztő és dizájner közötti együttműködését.  Ebben a megközelítési módban több elem is segíti a hatékony projektmunkát:
      • A ViewModel-ek koncepciója
      • A View-val való laza integráció
      • A ViewModel-ben exponált tulajdonságok, és parancsok, melyeket Command pattern, illetve Behavior-ök segítségével elérhetővé tettük
      • Illetve az Expression Blend és a ViewModel-jeinkbe beépített tervezésidejű támogatás.
  • Animációk
    • Animációk alkalmazásával, sokkal szórakoztatóbbá és látványosabbá tehetjük a felületet, életre kelthetjük azt. A Silverlight segítségével számos lehetőségünk van színek animálására, különböző időzített mozgások elkészítésére, vagy akár oldalak közötti átfedések kialakítására. Minden animáció azonos elv alapján működik. Ahhoz, hogy animációt tudjunk létrehozni, először is szükségünk lesz egy Storyboard objektumra, amely definiálja, hogy a létrehozandó animációkat mely objektumra szeretnénk érvényesíteni, illetve azon belül is melyik tulajdonságra. Megszabja az animáció viselkedését is — milyen hosszan játsszuk le, ismételjük-e meg, ha véget ért, stb. —, és még sok más dologban segít nekünk. Az Expression Blend egyik legnagyobb erőssége az animációk készítésében rejlik.
  • Képek kezelése (controlok)
    • A főbb controlok Silvterlightban:
      • UserControl
        • A UserControlok leggyakoribb használati területe a nézetek világa. A komplex felhasználói felület kisebb, önálló funkcionális egységekre való darabolásában játszanak fontos szerepet. Természetesen klasszikus értelemben vett, egyszerűbb vezérlők létrehozására is használhatók, de a testreszabhatóságnak komoly korlátokat szabnak.
      • Custom Control
        • Custom Controlok segítségével a legegyszerűbb vezérlőktől a legkomplexebbekig bármit készíthetünk, biztosítva az utólagos teljes testreszabhatóságot. A vezérlő megjelenése és a hozzá tartozó logika egymástól szinte teljesen elkülönül.
  • Layout vezérlők
    • Grid: a legsokoldalúbb és ezáltal leggyakrabban használt konténer. Ez a vezérlő lehetővé teszi tetszőleges számú és méretű oszlop illetve sor definiálását. Alapértelmezés szerint egy sor és egy oszlop létezik, amennyiben többet szeretnénk, megfelelő számú RowDefinition és ColumnDefinition objektumot kell készítenünk. A ShowGridLines tulajdonság állításával láthatóvá tehetjük a Grid oszlopait és sorait határoló vonalakat. Ha egy-egy vezérlőnek egynél több cellára van szüksége a Grid-en belül, ekkor a ColumnSpan és RowSpan tulajdonságokkal beállíthatjuk, hogy az hány sort/oszlopot foglalhat.
    • Canvas: lehetővé teszi, hogy explicit módon koordináták segítségével pozícionáljuk a vezérlőinket. Az x/y koordinátákat a Canvas.Left illetve a Canvas.Top attached propertykkel állítjuk be, amelyekkel a Canvas bal oldalának és felső részének a bounding boxtól való távolságát szabályozzuk. Amennyiben ezeket az értékeket nem adjuk meg, akkor automatikusan a bal felső sarokba (0;0) pozíciónál.
    • StackPanel: segítségével vízszintes vagy függőleges sorba rendezhetjük a vezérlőinket. Az Orientation tulajdonsággal vízszintes irányba állíthatjuk az elemeket.
    • WrapPanel: nem része az alapcsomagnak, a Silverlight Toolkit keretében juthatunk hozzá. Hasonló szerepet tölt be, mint a StackPanel, viszont van egy apró különbség, mégpedig az, hogy a lehető legoptimálisabban kitölti a rendelkezésre álló helyet, vagyis a vezérlők több sorban is megjelenhetnek. Lehetőségünk van arra is, hogy minden elem számára uniform méretet adjunk meg, amely akkor is érvényes marad, ha a vezérlőnek így kevés hely jut. Erre a célra az ItemHeight és ItemWidth tulajdonságokat használhatjuk. A FlowDirection tulajdonsággal a vezérlőelemek megjelenítésének sorrendjét szabályozhatjuk. Ez csak soronként érvényes, nem globálisan, vagyis ha egy elem eredetileg az utolsó sor utolsó tagja lenne, az nem kerülhet fel az első sorba.
    • DockPanel: segítségével a vezérlőelemeket egy-egy oldalhoz „ragaszthatjuk”.

 

 

A legtöbb információt a Silverlight könyvből nyertem. A könyv elejét (az első 7 fejezetet) részletesen néztem át, az utolsó fejezeteket inkább átlapoztam. De a könyvet sikerült megszereznem elektronikus formában, így a későbbiekben is utána lehet nézni dolgokat, akár a maradék részeket is el lehet olvasni.

Hasznos dolgokat találtam a devportal.hu-n. Szerintem ezt az oldalt a későbbiekben is sűrűn meglátogatom.

Megvalósítandó célok

Sziasztok!

A feladatom az, hogy egy játékvezérlőt készítsek, ami képes feldolgozni a Kinectről érkező adatokat, és átalakítani input jellé egy játék számára.

A fő feladat előtt készítenem kell kisebb alkalmazásokat, amelyek bemutatják a Kinect lehetőségeit. A főbb témák:

  • Az RGB kamera használata: Egy egyszerű alkalmazás, amely bemutatja, hogy hogyan kell használni a kamerát. Megjeleníti a képet és készít egy fotót.
  • Az IR mélységi szenzor használata: Az alkalmazás megjeleníti a mélységi adatokból készült képet, és kiírja a bal kéz távolságát az eszköztől.
  • Skeletal Tracking bemutatása

A későbbiek folyamán az alkalmazások listája és funkcióik bővülni fognak.

Üdvözlettel: Álb Csaba

Többnyelvű alkalmazás

Valószínűleg minden alkalmazás számára előny, ha a kezelőfelület a felhasználó számára automatikusan a saját nyelvén jelenik meg. Ezt például megállapíthatjuk onnan, hogy megnézzük a felhasználó gépének nyelvi beállításait, amit a CultureInfo.CurrentCulture.Name árul el nekünk, majd betöltjük az ennek a kódnak megfelelő nevű mappában lévő Resources.resw állományt amely NameValue – Comment” értékhármasokból áll. Ezekben tároljuk a különböző nyelvekhez tartozó stringek nevét és értékét.

Az automatikus betöltést a ResourceLoader végzi, melynek a GetSrting(“Name“); metódusával visszaadhatjuk a string értékét, amit mondjuk betöltünk egy TextBlock.Text attribútumába.

Ha viszont a jelenlegi nyelvi beállítások nem megfelelőek és a felhasználó más nyelven szeretné használni az alkalmazást, arra is lehetőséget kell adni, például egy egyszerű combobox segítségével, ahol az comboboxitemek “value” attribútumába írva a nyelvi kódot, átadhatjuk az kiválasztani kívánt nyelvet, és ezzel frissítjük a felhasználó felületet például a SelectionChanged eseménykezelésében. (Ha ez nem passzol az alkalmazás felületére, lehetőség van megvalósítani az alkalmazás Beállításainál a CharmBaron is.)

Ekkor a nyelvet egy kontextusba betöltve, a megfelelő elérési útvonalat megadva, annak GetValue(“Name“, context).ValueAsString; metódusával kaphatjuk meg a kívánt string értékét.

Fontos szem előtt tartani, hogy ha valaki egyéb mértékegységeket is szeretne használni, akkor nem elég csak a nyelvet meghatározni, hanem az országot/régiót is. Például “en” kódú, vagyis angolul beszélő ország több van, de nem mindegyik használ amerikai (“en-US”) mértékeket.

Rajzolás

Sziasztok!

Most megnézzük hogyan is lehet rajzolni a canvasra html5-ben javascript segítségével.

Először is hozzunk létre egy új projektet a szokásos módon majd nyissuk meg a default.html  fájlt és adjuk hozzá a következő sort a body-hoz:

<canvas id=”canvas”></canvas>

Ha ezzel megvagyunk a default.js fájlra lesz szükségünk amihez adjuk hozzá az initialize() függvényt az „app.oncheckpoint = function (args) {“ sor elé:

function initialize(){

}

A függvényben akkor inicializáljuk is a canvasunkat:

canvas = document.getElementById(“canvas”);
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;
context = canvas.getContext(“2d”);

Ezzel letre is hoztunk egy képernyő mértű rajzterületet amire rajzolhatunk különböző dolgokat pl: vonalat téglalalpot…

Néhány példa:

Vonal rajzlása:

context.strokeStyle = ‘#0f0’; // a vonal színe
context.moveTo(20, 20); //innen indul a vonal rajzolása
context.lineTo(100, 30); //ide húzzuk a vonalat
context.lineWidth = 3; //vonalvastagság
context.stroke(); //végül a rajzolás

kitöltött téglalap rajzolása:

context.fillStyle = ‘#00f’;
context.fillRect(600, 50, 100, 200);
context.lineWidth = 5;
context.stroke();

görbe rajzolása:

//gorbe rajzolasa

context.moveTo(20, 50);
context.quadraticCurveTo(190, 700, 400, 50);
context.lineWidth = 1;
context.stroke();

Végül ahhoz, hogy múködjön is a még egy dologra less szükségünk mégpedig meg kell hívnunk az inicialize() függvényt ezt pedig a következőképp tehetjük meg:

document.addEventListener(“DOMContentLoaded”, initialize, false);

ezt a sort kell betennünk mondjuk az “app.start();” sor elé.

Ha meindennel megvagyunk futtasuk a programunkat és ha minden jól megy akkor a következőnek kell megjelennie elöttünk:

a forrásfájl letölthető innen: CanvasDemo1

Üdv.: Balázs

Alapvető vezérlők

Osztályhierarchia: A legtöbb fejlesztői környezetben egyértelműen azonosíthatók a vezérlőelemek. A silverlight-ban nem elég egyértelmű, ugyanis sok elemet is kezelhetünk vezérlőként. A hierarchia legalján a DependencyObject osztály áll. Fő feladata az adatkötés. Második szinten a UIElement áll. Ez felel a vizuális megjelenítésért. UIElement-ből származik a FrameWorkElement, ami lényegében kiterjeszti a fölötte lévők képességeit. Ilyen például a TextBlock osztály. Erre nem vonatkozik a VerticalAligment és a HorizontalAligment tulajdonságok. Csak a Control osztályból közvetlenül származhatnak. A FrameWorkElement-ből származik a Panel osztály is. A hierarchia legalján található a Control osztály. A vezérlők őse.

Layout Management – Silverlight

Amikor Layout Management-ről beszélünk, akkor az alkalmazásunk felhasználói felületén megjelenített vezérlőelemek elrendezéséről beszélünk.

Pozicionálás: Az abszolút és a dinamikus pozicionálást támogatja. Leíró kód áttekinthető. Minden silverlight program egy konténer elemre építkezik. A konténerek a vezérlőelemeket tárolja. Több féle vezérlőelem létezik pl.: Canvas,Grid. Amennyiben nem adunk meg neki paramétereket, akkor kitöltik a rendelkezésükre álló teret, ez alól egy kivétel van, mégpedig ha a konténer elem a canvas. Pozíciók finomhangolására is lehetőség van. Minden vezérlőben másképpen történik. Létezik egyszerűbb módszer is. A VerticalAligment és a HorizontalAligment tulajdonságpáros.

Grid: A legsokoldalúbb és a leggyakrabban használt konténer. Tetszőleges számú sor és oszlop definiálását. Alapértelmezés szerint egy oszlop és sor van definiálva. Többet szeretnénk, akkor a RowDefinition és ColumnDefinition objektumot kell elkészíteni.A ShowGridLines segítségével láthatóvá tehetjük az oszlopok és sorok elválasztó vonalait.

Canvas: lehetővé teszi, hogy explicit módon koordináták segítségével pozicionáljuk vezérlőinket. Nem veszi figyelembe a böngésző méretét. Az x/y koordinátákat a Canvas.Left illetve a Canvas.Top attached propertykkel állítjuk be. Itt különféle beállításokat végezhetünk el. ZIndex segítségével beállíthatjuk például,hogy a vezérlő eltakarhat-e egy másikat.

Kezdeti lépések

Helló,

Egy kis emlékeztető: Célok

Tehát, ahhoz hogy wondow 8 alatt fejlesszünk ’windows store app’ stílusú alkalmazásokat a következő dolgokra lesz szükségünk:

Windows 8

Visual studio 2012 for win8.

Ha ezek telepítésével megvagyunk kezdőthet is a fejlesztés :).

Nyissuk meg a vs2012-őt és hozzunk létre egy új projektet(FILE->new->project), ezután a  templates-ek küzül válasszuk a JavaScript-et itt pedig a Blank App, állítsuk be a projekt helyét és nevezzük el majd ok. Ha minden jól megy létre is jött a projektünk.

A projekt solution-ében a főbb dolgok a következők:

References (windows library for JavaScript)

css mappa: kezdetben a defaultl.css-t tartalmazza, ide menthetjük a különböző css fájljainkat.

images mappa:  kezdetben itt a programunkban talalható kepek vannak például az alkalmazás indulásánál mi jelenjen meg stb. Ezek a fájlok felül írásával könnyedén cseréljetjük ezeket(érdemes odafigyelni hogy azonos felbontású és méretű képekkel írjuk felól a meglévőket)

js mappa: kezdetben a default.js-t tartalmazza ez fogja indítani az alkalmazásunkat

default.html: (fentebb láthtjuk a tartalmát),A WinJS references részt érdemes minden html oldlunkba bemásolni a References részeit „incloudolja”, itt állíthatjuk monjuk az alkalmazásunk stílusát sötétre vagy világosra az „ui-dark.css”, vagy „ui-light.css” segítségével. Ez után saját referenciáinkat is hozzáadjuk jelen esetben a default.css-t és default.js-t.

Ha mindennel megvagyunk futtasuk a programot, ha még nincs tabletünk (ami jelenleg elég valószínű) akkor két lehetőségünk van a futtatásra, futtathatjuk a saját gépünkön(local machine) vagy szimulátoron (Simulator).

Ha elindítottuk az alkalmazásunkat a következő fog megjelenni: „Content goes here”, ez van a html fájlunk body-jában.

Nos egyenlőre ennyi hamarosan folyt. köv.

Üdv.: Balázs

Silverlight – Animációk

Silverlight animációk létrehozásának egyik legegyszerűbb módja a blend segítségével lehetséges. A blend erőssége az animációkban rejlik. Próba képpen megpróbálok animálni egy négyzetet, amely kék színből szürkévé váltzik. A négyzet kirajzolása viszonylag egyszerű feladat. Kitöltése is. Aki használt már Adobe Falsh-t annak nagyon ismerős kinézet, működés. Itt is megtalálható az idővonal, amelyben létrehozunk egy storyboardot. A z idővonalon beállíthatjuk az időkorlátokat valamint találhatunk az idővonal felett nyilakat amelyekkel elindíthatjuk az animációt, illetve ugrálhatunk a különböző storyboardok között.A feladatunk annyi volt scupán, hogy egy storyboard beszúrása után a négyzet színét olyan változtattam, amilyenre szerettem volna, helyben megtekintettem az eredményt és a szín sikeresen megváltozott. Ha sikerült megváltoztatni a színt, akkor próbálkozzunk meg mondjuk, hogy a négyzetből kört animáljon. Amennyiben ezzel is kész vagyunk próbáljunk olyan animációt létrehozni, amelyben gombbal indíthatjuk el az animációnkat. Hozzunk létre a button eszköz segítségével egy nyomógombot, melynek adjuk az “animáció indítása” nevet. Hozzunk létre egy ellipszis. Majd a timeline-on hozzunk létre storyboardot. 3-mat vagy akár többet is. Hozzunk létre egyet az 1ms-nél és húzzuk oda az ellipszis, majd a 2ms-hez is húzzuk oda.Elindítjuk az animációt láthatjuk ,hogy a kis ellipszisünk a megadott útvonalon mozog. Ekkor még semmi köze a gombhoz. Jelöljük ki a gombot, majd a kis villám ikonra kattintva előjön a gombhoz tartozó események megadása. Kattintsunk kétszer a Clickre. Előjön egy forráskód. Ennek a kódnak a “private void Button_Click(object sender, System.Windows.RoutedEventArgs e)” sora után írjuk be, hogy : sbAnim.Begin(); . Ezután, ha lefuttatjuk gombnyomásra indíthatjuk az animációnkat. A mai napba sajnos csak ennyi fért bele, de hamarosan újra jelentkezek!

Hangok hozzáadása

Kétféle hang van, folytonos háttérzene és effekt hang.

1. Hozzuk létre a megfelelő változókat
SoundEffect effect;
Song music;

2. A Content projekten belül helyezzük el a hangfájlokat. Célszerű egy új mappát létrehozni.

3. A LoadContent() metóduson belül töltsük be a hangokat
music = Content.Load<Song>( “Sound/gameMusic” );
effect = Content.Load<SoundEffect>( “Sound/laserFire” );

4. A háttérzenét még a LoadContent-ben elindítjuk
PlayMusic( music );

5. Ehhez a PlayMusic metódust létre kell hozni
private void PlayMusic(Song song) {
try {
MediaPlayer.Play( song );
MediaPlayer.IsRepeating = true;
} catch {
}
}

6. Az effekt hangot a megfelelő helyeken elindítjuk
effect.Play();