tiistai 7. huhtikuuta 2009

Blogi vaihtuu

Tämä blogi vaihtuu uuteen. Uusi blogi löytyy osoitteesta

http://www.verajankorva.com/openblog/

Tämän blogin artikkelit löytyvät myös uudelta blogilta.

maanantai 6. huhtikuuta 2009

Lisää custom dataa .NET ListViewItem olioon.

Usein tulee vastaan tilanne, että ListViewItem tai TreeViewItem pitäisi sisältää dataa, joka ei näy itse komponentissa esim. jokin tunnisteguid.

Oman tiedon kirjoittaminen ListViewItemiin ei ole lainkaan vaikeaa. Näin se käy.

Luodaan luokka, joka perii ListViewItem luokan.

public class MyListViewItem : ListViewItem
{
private Guid m_guid;

public MyListViewItem()
{
}

public Guid Guid
{
set
{
m_guid = value;
}

get
{
return m_guid;
}
}
}

Ja nyt voit käyttää luokkaasi ihan normaalisti.

MyListViewItem mlvi = MyListViewItem();
mlvi.Text = "TEST TEXT";
mlvi.Guid = Guid.NewGuid();

this.listView1.Items.Add( mlvi );

Ja kun nyt haluat päästä käsiksi omaan dataasi.

MyListViewItem mlvi = (MyListViewItem)this.listView1.Items[0];
Console.Out.WriteLine( mlvi.Guid.ToString() );

Siinä se. Helppoa, nopeaa ja käytännöllistä.

maanantai 30. maaliskuuta 2009

Scanline rendaaja Flashille

Pitkään on pitänyt tätä kokeilla ja loputakin löysin aikaa tämän tekemiseen.

Katso esimerkki

Eli scanline rendaaja Flash 10:lle. Tärkeintä tässä on se, että enginessä on oikea zbuffer. Eli joka pikselillä on z arvo jota vasten voidaan tarkistaa mikä pikseli on minkäkin pikselin etu- vai takapuolella.
Tavallisesti Flash 3d-enginet eivät tee näin, koska polygonien rasterointi on flashilla hidasta, puhumattakaa pikselin piirtämisestä. Kuitenkin nykyisin alkaa vaikuttaa siltä, että pikselin piirto alkaa olla sen verran nopeaa, että jonkinlaiseen käyttöön sitä voisi jo käyttää. Edelleen olisi nopeampaa tehdä, kuten Papervision, Sandy3d tai Away3d eli käyttää Flashin omaa polygonin piirtoapia ja sorttaa polyt esim zsortilla. Ongelma kuitenkin on, että polyt voivat joissain tilanteissa piirtyä väärässä järjestyksessä, koska z arvot lasketaan vain polyn keskipisteen mukaan, jolloin tulos ei ole aina oikein. Lisäksi zsort ei voi piirtää leikkaavia polygoneja okein. Pikselipohjainen zbuffer on melkoisesti hitaampi, mutta polyt piirtyy aina oikein myös silloin jos polyt leikaavat toisiaan.

Lähdekoodit