Nisam neki expert za VB da ti saspem sada kod, ali da ti dam makar hint: nemoj da koristis circle, nego isrtavanja sa tackama. Znaci, transformises jednacinu u parametarski oblik, tacnije trigonometrijsku formu.
Evo na primer - ovu jednacinu za krug Y2 = X2 - R2 (ovo su kvadrati, tj. Y na kvadrat je X na kvadrat minus ...) pretvoris u parametarski i dobijes:
X = R * cos(t) i
Y = R * sin(t)
Svaka tacka na krugu mora da zadovolji ove (X,Y) koordinate. Da bi dobio pun krug, stavis iscrtavanje tacke u petlju 0..360 stepeni. Naravno, ako ne uzimas pun krug (0..360), mozes da dobijes isecak kruga. Sta je sa elipsom ovde ? Pa probaj da stavis za X i Y razlicite vrednosti R1 i R2, pa ce ti se kas'ti samo.
Kako sad da uradis rotaciju svega toga ? Uz sledecu formulu:
Xr = Xn * cos(fi) + Yn * sin(fi)
Yr = Yn * cos(fi) + Xn * sin(fi)
gde su:
Xn, Yn - "normalne" koordinate izracunate po onim prvim parametarskim jednacinama
Xr, Yr - nove, "rotirane" koordinate
fi - ugao za koji rotiras
Ukoliko radis i translaciju, moras da dodas jos i ceo broj na kraju za oba parametra. Ovo u slucaju da hoces da ti pocetak koordinatnog sistema ne bude u cosku, nego negde na sredini forme.
Dakle, ukoliko ne koristis neku napredniju biblioteku za crtanje grafike, za ovakve stvari po canvasu treba i malo matematike.
E sad, iscrtavanja zarotiranih dugmeta, listboxova i ostalo pod nekim uglom - e to je vec izazov i bas me zanima da li bi neko ovde znao
