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í.
Avatar
Dominik Vokůrka:6.2.2022 22:16

Ahoj, potřeboval bych, aby se obrázek šipky co mám ve winformech v pictureBoxu otáčel za myší.

Zkusil jsem: Umím otočit obrázek na nějakou hodnotu, ale nevím jak napsat, aby se obrázek otáčel neustále. Nenapadá mě jak to udělat. Hledal jsem na internetu, ale tohle nikdo ještě neřešil.

Chci docílit: Dělám hru a ta šipka by měla ukazovat směr, kterým hráč vyšle míček.

 
Odpovědět
6.2.2022 22:16
Avatar
HONZ4
Člen
Avatar
Odpovídá na Dominik Vokůrka
HONZ4:6.2.2022 23:13

pokud je to winform, tak to nedělej tak, že se bude obrázek otáčet, ale udělej si obrázky pro obrázky u po krocích s různými úhly, a vždy vykresluj jen tu část , kterou budeš potřebovat. Klasicky se tak dělají otočné potenciometry třeba pro ovládání hlasitosti.
Obrázek vypadá nějak takto:

 
Nahoru Odpovědět
6.2.2022 23:13
Avatar
DarkCoder
Člen
Avatar
Odpovídá na Dominik Vokůrka
DarkCoder:6.2.2022 23:16

Aby si docílil efektu neustálého otáčení šipky, musíš zjišťovat pozici kurzoru myši v každém framu, vypočítat úhel a vykreslit šipku otočenou o tento úhel.

Nahoru Odpovědět
6.2.2022 23:16
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
Avatar
JerryM
Člen
Avatar
JerryM:24.2.2022 8:42

normálně šipka je složená třeba ze 7 bodů resp. 7 useček no a tak si střed tý šipky nakreslíš někde doprostřed souřadnýho systému na pozici P(x=0,y=0) takže část šipky bude v záporných souřadnicích a část v kladných a pak budeš jenom otáčet bodama tý šipky podle pozice myši:

tady to máš napsaný : https://veiner.eu/…ivrovine.php

x=x′cos(φ)+y′­sin(φ)

y=y′cos(φ)−x′­sin(φ)

a zjištění pozice kurzoru myši ve tvém okně se dělá takhle
https://docs.microsoft.com/…sor.position?…

nebo na celé obrazovce pak pomocí funkce WinAPI

[DllImport("u­ser32.dll")]
public static extern bool GetCursorPos(out POINT lpPoint);

https://stackoverflow.com/…n-in-c-sharp

buď to dáš do cyklu nabo si spustíš časovač aby ti to četl nebo si Hookneš událost :) windows:

https://stackoverflow.com/…ooking-mouse

 
Nahoru Odpovědět
24.2.2022 8:42
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 4 zpráv z 4.