Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Zobrazení několika stejných obrázků + bod který má pozici stejnou jako pozice mysši

Aktivity
Avatar
Preedy
Člen
Avatar
Preedy:22.8.2012 14:07

Ahoj, snažím se udělat takovou mini střílečku, při spuštění aplikace v panelu zobrazit 5 stejných obrázků na různých pozicích to jsem zvládl takhle:

private void panel_hry_Paint(object sender, PaintEventArgs e)
       {
           Graphics kp = e.Graphics;
           int pomX = sirkaPanelu - sirkaPanacka;//definováno v loadu
           int pomY = vyskaPanelu - vyskaPanacka;// -||-
           int i = 0;
           while (i < 5)
           {
               xLHPanacka = this.nahoda.Next(0, pomX + 1);
               yLHPanacka = this.nahoda.Next(0, pomY + 1);
               kp.DrawImage(panacek, xLHPanacka, yLHPanacka);
               i++;
           }
       }

ale stává se že se obrázky překrývají tak jsem se snažil udělat že pokud se středy obrázku rovnají tak to udělej znovu to jsem zkoušel všelijak, ale nazdařilo se(proměnné tam mám jednou a je nesmysl dělat pro každý obrázek zvlášť).
Druhý problém snažit se nakreslit bod(zaměřovač) který se posune vždy tam kde je zrovna myš(šipka).

Point poziceMysi = MousePosition;xMys = poziceMysi.X;
            yMys = poziceMysi.Y;

a potom nakresli elipsu v bodech xMys, yMys a zasekl jsem se. Tak kdyby se našel někdo kdo mi poradí, bud vděčný.

 
Odpovědět
22.8.2012 14:07
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Preedy
David Hartinger:22.8.2012 14:54

Překrytí obrázků nejde vyřešit bez toho, aniž by sis pamatoval, kde již jsou. Budeš si muset napsat metodu na kolizi obdelníků a pokládat obrázek tak dlouho, dokud nebude s ničím kolidovat.

Nenapsal jsi, na čem jsi se s myší zasekl, čili nevím, jak bych ti s tímto mohl pomoci.

Nahoru Odpovědět
22.8.2012 14:54
You are the greatest project you will ever work on.
Avatar
Preedy
Člen
Avatar
Preedy:22.8.2012 16:07

ten zaměřovač si představuju tak že se objeví nějaký bod, a ten se bude hýbat stejně jako myš, pokud pohnu myší doleva, tak se i ten bod posune doleva..(nebo druhá možnost že aby ten bod byl vidět, tak by byl vždy např. 5 px doprava a 5 nahoru)

 
Nahoru Odpovědět
22.8.2012 16:07
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Preedy
David Hartinger:22.8.2012 17:34

Když si dáš na panel událost MouseMove, tak v parametru callbacku e máš souřadnice, tedy e.x a e.y, na kterých je myš.

Nahoru Odpovědět
22.8.2012 17:34
You are the greatest project you will ever work on.
Avatar
user
Tvůrce
Avatar
user:22.8.2012 17:37

Předpokládám že používáš XNA framework:

Jinak stále nerozumím s čím máš problém.
Ale pokusím se:

(pozici myši zjistíš pomocí Mouse.GetState().X / Mouse.GetState().Y)
(pozice se posuzují většinou podle rectanglů).

Zaměřovač můžeš mít např. jako obrázek

takže mám rectangle zamerovac (v metodě LoadContent())

Rectangle zamerovac = new Rectangle(
                50, // na nejakych zacinajicich souradnicich
                50,
                zamerovacTexture.Width,
                zamerovacTexture.Height);

pozici zaměřovače pak aktualizuješ v update metodě tak, že nastavíš:

zamerovac.X = (int)Mouse.GetState().X;
zamerovac.Y = (int)Mouse.GetState().X;

("Rectangle zamerovac" samozrejme jeste vykreslis)...
Snad to je to s čím máš problém, pokud ne, zkus se lépe vyjádřit.

 
Nahoru Odpovědět
22.8.2012 17:37
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na user
David Hartinger:22.8.2012 17:52

Nepoužívá, píše, že to má na panelu :)

Nahoru Odpovědět
22.8.2012 17:52
You are the greatest project you will ever work on.
Avatar
user
Tvůrce
Avatar
Odpovídá na David Hartinger
user:22.8.2012 18:03

aha, nějak mi to uniklo, sorry

 
Nahoru Odpovědět
22.8.2012 18:03
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 7 zpráv z 7.