Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Kako se rotira slika?

[es] :: .NET :: Kako se rotira slika?

[ Pregleda: 2241 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

toxi_programer
Nemanja Todić
Beograd

Član broj: 104396
Poruke: 464
*.vdial.verat.net.

Sajt: www.articles411.com


+8 Profil

icon Kako se rotira slika?23.08.2007. u 18:23 - pre 175 meseci
Zdravo svima.

Opet mi treba vaša pomoć. Našao sam kod za Asteroids igricu koja je napisana u C# jeziku a u toj igricu se "brodić" koji igrač kontroliše rotira za 360°. Gledao sam kod i nisam uspeo da shvatim kako je izvedeno rotiranje. U pitanju je dvodimenzionalna grafika dobijena pomoću GDI+. Recimo imam na sred forme neku bitmapu i želim da se ona rotira pritiskom na recimo strelicu gore odnosno dole... Imate li neku ideju kako ovo da uradim?
 
Odgovor na temu

PeraKojovic
Petar Kojovic
Novi Sad

Član broj: 95569
Poruke: 56
80.74.165.*



Profil

icon Re: Kako se rotira slika?23.08.2007. u 21:20 - pre 175 meseci
Pozdrav,

prvo, potrebno je znati u kom je formatu slika, pretpostavimo da je tipa Bitmap.
Jedno resenje bi podrazumevalo da se koristi unsafe kod, i uzme pokazivac
na pomenutu bitmapu, pokupe se svi pikseli, odnosno uradi se "rucno" rotiranje
po nekom metodu za rotiranje. Bitmap-a jeste 2D, ali je u memorijskoj predstavi
to zapravo 1D - odnosno vektor piksela, odnosno niz (npr.)bajtova za tri komponente.
Znaci piksel_red1_kolona1, piksel_red1_kolona2...piksel_red1_kolonaN, piksel_red2_kolona1,
piksel_red2_kolona2,...piksel_red2_kolonaN... pa sve do piksel_redM_kolonaN
E sad bas da li je po kolonama pa po redovima ili obratno, probaj pa ces utvrditi.
Nesto kao:

Code:

BitmapData bmData = b.LockBits(new Rectangle(0, 0, b.Width, b.Height), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);
    int stride = bmData.Stride;
    System.IntPtr Scan0 = bmData.Scan0;
    unsafe
    {
        byte * p = (byte *)(void *)Scan0;
        int nOffset = stride - b.Width*3;
        byte red, green, blue;
        for(int y=0;y<b.Height;++y)
        {
            for(int x=0; x < b.Width; ++x )
            {
                blue = p[0];
                green = p[1];
                red = p[2];
                p += 3;
            }
            p += nOffset;
        }
    }
    b.UnlockBits(bmData);


Nadam se da sam pomogao...

[code]
 
Odgovor na temu

vujkev
Beograd

Član broj: 8072
Poruke: 1337
*.telekom.yu.



+103 Profil

icon Re: Kako se rotira slika?24.08.2007. u 09:30 - pre 175 meseci
Za sve operacija sa gotovim slikama najbolje je koristiti Matrix. Pogledaj ovde
Naučio sam...
Da je važnije biti ljubazan nego biti u pravu
 
Odgovor na temu

PeraKojovic
Petar Kojovic
Novi Sad

Član broj: 95569
Poruke: 56
*.ns.ac.yu.



Profil

icon Re: Kako se rotira slika?24.08.2007. u 12:12 - pre 175 meseci
Lepo...
 
Odgovor na temu

toxi_programer
Nemanja Todić
Beograd

Član broj: 104396
Poruke: 464
*.vdial.verat.net.

Sajt: www.articles411.com


+8 Profil

icon Re: Kako se rotira slika?24.08.2007. u 17:23 - pre 175 meseci
Pero, jesi pomogao da naučim nešto novo, ali ovo za rotiranje nisam uspeo da uradim preko koda koji si dao
Svejedno, @vujkev je dao extra link, uspeo sam da uradim ovo sada...

Hvala vam!
Usput linkovani sajt mi se mnogo dopada zbog svog sadržaja.
 
Odgovor na temu

[es] :: .NET :: Kako se rotira slika?

[ Pregleda: 2241 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.