Diskuze: Posúvanie myši o určité číslo
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 8 zpráv z 8.
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
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š
Toto som vedel, že cez Point, len ten algoritmus mi robí problémy
Projedeš si řádky a sloupce přes for a najdeš si ten nejbližší k myši
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 :/
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
Pokud používáš WF tak si nahraď
'Mouse.GetPosition(panel)' s 'panel.PointToClient(Cursor.Position);'
Vďaka, funguje to ešte to
bude treba trochu doladiť, ale už sa s tým nejako pohrám
ďakujem
Zobrazeno 8 zpráv z 8.