Válí se ti projekty v šuplíku? Dostaň je mezi lidi a získej cool tričko a body na profi IT kurzy v soutěži ITnetwork summer 2017!
Přidej si svou IT školu do profilu a najdi spolužáky zde na síti :)

Diskuze: Posúvanie myši o určité číslo

C# .NET .NET (C# a Visual Basic) Posúvanie myši o určité číslo American English version English version

Aktivity (1)
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
Redaktor
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
Přecházím na "Cross-Platform Development"
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
Redaktor
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
Přecházím na "Cross-Platform Development"
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
Redaktor
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
Přecházím na "Cross-Platform Development"
Avatar
Theodor Johnson
Redaktor
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
Přecházím na "Cross-Platform Development"
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.