Tämä esimerkki näyttää yhden tavan kääntää kuvaa tietyn asteluvun verran. Koodi on lyhyt - mutta hidas, joten optimointivaraa riittää. Formilla on oltava kaksi PictureBoxia (pL, jossa on itse kuva ja pK joka on hieman pL:tä suurempi), CommandButton (Command1) ja TextBox (tK johon kirjoitetaan kulman suuruus asteina)
Private Sub Command1_Click()
Dim keskix As Double, keskiy As Double
Dim pii As Double, kulma As Double
Dim leveys As Double
keskix = pK.Width / 2
keskiy = pK.Height / 2
lkeskix = pL.Width / 2
lkeskiy = pL.Height / 2
leveys = pL.Width
pii = 4 * Atn(1)
kulma = CDbl(tK) * (pii / 180) 'kulma radiaaneiksi
pK.Cls
For j = leveys To 0 Step -1
For i = 0 To 2 * pii Step 0.007 'mitä pienempi, sen tarkempi
vari = pL.Point(lkeskix + Sin(i + kulma) * j, lkeskiy + Cos(i + kulma) * j)
If vari <> -1 Then pK.PSet (keskix + Sin(i) * j, keskiy + Cos(i) * j), vari
DoEvents
Next
Next
End Submikähän tässä nyt mättää.. ku en saa toimiin.. hö
No kyllä on hidas!
Kyllä tällä 1700mhz toimii hyvin :)
Mutta mutta, kuvaan tulee reikiä!
C:llä pystys ohjelmoimaan nopeamman... ;P
HaRa --> Teeppäs sellanen.
Niin pystyisi VB:lläkin. Taidanpa tehdä viikonloppuna parannetun version, tee sinä C:llä ja sitten verrataan...
kuvaan ei tuu reikiä jos algoritmisesti uuden kuvan
(sen joka on pyöritetty) jokaiselle pikselille etsitään vanhasta kuvasta vastaava pikseli
tosi hidas mut mul onki hidas kone muutenki
on tosiaan hidas, mutta pienemmillä kuvilla ton Stepin voi tosiaan jättää pieneks. ja paremmin mulla toimii kun antti laaksosen vastaava :D
Aihe on jo aika vanha, joten et voi enää vastata siihen.