IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
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í.
Avatar
roks
Člen
Avatar
roks:14.11.2013 14:00

Zdravím, vedel by mi niekto poradiť, ako spravím aby sa mi v paneli posúvala myš o určité číslo? Ak nechápete, mám namysli, aby sa posúvala myš ako v game makery, keď máte editor máp :) vopred ďakujem :)

 
Odpovědět
14.11.2013 14:00
Avatar
Theodor Johnson
Tvůrce
Avatar
Odpovídá na roks
Theodor Johnson:14.11.2013 14:53

Ve WF

System.Windows.Forms.Cursor.Position = new Point(20, 35);

bez WF

[DllImport("user32.dll")]
static extern bool SetCursorPos(int X, int Y);

algoritmus na zachytávání k mřížce snad zvládneš

Nahoru Odpovědět
14.11.2013 14:53
Mo8ilε 15 Ѐλđ
Avatar
roks
Člen
Avatar
Odpovídá na Theodor Johnson
roks:14.11.2013 15:16

Toto som vedel, že cez Point, len ten algoritmus mi robí problémy :)

 
Nahoru Odpovědět
14.11.2013 15:16
Avatar
Theodor Johnson
Tvůrce
Avatar
Odpovídá na roks
Theodor Johnson:14.11.2013 16:34

Projedeš si řádky a sloupce přes for a najdeš si ten nejbližší k myši

Nahoru Odpovědět
14.11.2013 16:34
Mo8ilε 15 Ѐλđ
Avatar
roks
Člen
Avatar
Odpovídá na Theodor Johnson
roks:14.11.2013 22:07

skúšal som to takto:

if (listSirka.Contains(x) != true)
                for (int i = x; i < sirka; i++)
                    if (listSirka.Contains(i))
                        x = i;
            if (listVyska.Contains(y) != true)
                for (int i = y; i < vyska; i++)
                    if (listVyska.Contains(i))
                        y = i;
Cursor.Position = new Point(x, y);

Ale stále mi hádže y hore nad panel :/

 
Nahoru Odpovědět
14.11.2013 22:07
Avatar
Theodor Johnson
Tvůrce
Avatar
Odpovídá na roks
Theodor Johnson:14.11.2013 22:19

Viděl bych to spíš takhle:

#region V Metode

Point nearest = new Point(0,0);
double nearestDist = 1000;

int sirka = 640;
int vyska = 480;

for(int yy = 0; yy < sirka; yy+= 16)
{
    for(int xx = 0; xx < vyska; xx+= 16)
    {
        double dist = Distance(Mouse.GetPosition(panel), new Point(xx, yy));
        if (dist < nearestDist)
        {
            nearestDist = dist;
            nearest = new Point(xx, yy);
        }
    }
}

Cursor.Position = nearest;

#endregion


#region Mimo Metodu

public static double Distance(Point p1, Point p2)
{
    return Math.Sqrt(((p1.X - p2.X) * (p1.X - p2.X)) + ((p1.Y - p2.Y) * (p1.Y - p2.Y)));
}

#endregion

P.S. Nepoužíval jsem k tomu VS tak tam může být sem tam chyba

Nahoru Odpovědět
14.11.2013 22:19
Mo8ilε 15 Ѐλđ
Avatar
Theodor Johnson
Tvůrce
Avatar
Odpovídá na roks
Theodor Johnson:14.11.2013 22:24

Pokud používáš WF tak si nahraď
'Mouse.GetPosi­tion(panel)' s 'panel.PointTo­Client(Cursor­.Position);'

Nahoru Odpovědět
14.11.2013 22:24
Mo8ilε 15 Ѐλđ
Avatar
roks
Člen
Avatar
Odpovídá na Theodor Johnson
roks:16.11.2013 11:08

Vďaka, funguje to :) ešte to bude treba trochu doladiť, ale už sa s tým nejako pohrám :) ďakujem

 
Nahoru Odpovědět
16.11.2013 11:08
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 8 zpráv z 8.