Avatar
roks
Člen
Avatar
roks:

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
Redaktor
Avatar
Odpovídá na roks
Theodor Johnson:

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
Přecházím na "Cross-Platform Development"
Avatar
roks
Člen
Avatar
Odpovídá na Theodor Johnson
roks:

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
Redaktor
Avatar
Odpovídá na roks
Theodor Johnson:

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
Přecházím na "Cross-Platform Development"
Avatar
roks
Člen
Avatar
Odpovídá na Theodor Johnson
roks:

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
Redaktor
Avatar
Odpovídá na roks
Theodor Johnson:

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
Přecházím na "Cross-Platform Development"
Avatar
Theodor Johnson
Redaktor
Avatar
Odpovídá na roks
Theodor Johnson:

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
Přecházím na "Cross-Platform Development"
Avatar
roks
Člen
Avatar
Odpovídá na Theodor Johnson
roks:

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.