Kirjoittaja: sooda
Kirjoitettu: 25.04.2004 – 25.04.2004
Tagit: grafiikka, koodi näytille, vinkki
tekee hieanoa sinistä(!) siniaaltoa hiiren avulla, aallon ensimmäinen harja on hiiren kohdalla. Tosi k3wl kun pitää hiirtä pohjassa ja raahailee :), olen ite kokeillut ton kaavan miten aallon saa tuolla tavalla hiiren mukaan, en ole kopsinut mistään.
binaaäärii: http://sooda.dy.fi/foo/siniaalto.exe
Private mX, mY, x 'hiiren alkukoordit Private Voimakkuus, AallonPituus 'aallon ominaisuuksia Private Sub Form_DblClick() Cls 'ruutu tyhennetään tuplaklikkaamalla End Sub Private Sub Form_Load() BackColor = vbWhite 'valkoinen tausta WindowState = 2 'koko näyttöön End Sub Private Sub Form_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single) If Button = 0 Then Exit Sub 'jos ei paineta nappia niin ei tehdä mitään mX = x 'hiiren startti coordit mY = y End Sub Private Sub form_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single) If Button = 0 Then Exit Sub 'jos ei paineta nappia niin ei tehdä mitään mX = x 'hiiren startti coordit mY = y piirrä 'piirrä viiva End Sub Private Sub Form_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single) If Button = 0 Then Exit Sub piirrä 'piirrä viiva End Sub Sub piirrä() Voimakkuus = (Height / 2 - mY) 'aallonvoimakkuus AallonPituus = mX / (1.5 * 3.141592653654) + 1 'aallonpituus For x = 0 To Width Step 5 'piirretään vasemmalta oikeelle, siirrytään 5px kerralla y = Voimakkuus * Sin(x / AallonPituus) 'yy koordi PSet (x, Height / 2 + y), RGB(0, 0, 255) 'pointsettaa Next End Sub
Bugi: Jos hiiren vie vasempaan laitaan tulee vain kaksi poikittaista viivaa, vaikka pitäisi tulla pystyviivaa koko formin täydeltä.
Anteeksi nyt tämä pikkumaisuus. :D
Muuten hieno koodivinkki!
Ja toinenkin bugi kun pitää hiiren pohjassa.
Hieno....
Tollahan saa komeita "efektejä".
Hyvää työtä.
Tämähän on hieno, varsinkin kun pitäää pohjassa ja liikuttelee tasaisesti :)
peki, kiitos kun huomautit, se johtui tästä: tuon AallonPituus = (mX + 1) / (1.5 * 3.141592653654) piti olla se mikä se nyt on. Kokeilkaa kaikki sitä että pidätte hiiren ruudun vasemmassa reunassa ja viette sen ylös ja nappi pohjaan ja liikutatte hiiren alas niin tulee tosi kiva efekti! Että tää on kaunis vaikka ite sanonkin, pitäisi keksiä muitakin hiiriefektejä :P
Ja ZaLaMaMDeR, jos tarkoitit sitä että kun piirtää hiirtä pohjassa niin siitä tulee kokoajan aaltoa, niin sen pitää olla niin.
Melko hieno. :o
Hmm, Formin ScaleMode kannattaisi asettaa Pixel-vaihtoehtoon, ja sitten loopata ScaleWidth:iin asti. Muuten tuo kommentti "siirrytään 5px kerralla" ei pidä paikkaansa :) Myöskin Height:it tulisi sitten muutttaa ScaleHeighteiksi. Tämän jälkeen viivaan tulee reikiä, mutta sitten voitaisiinkin käyttää Line-rutiinia, Line -(x, ScaleHeight / 2 + y), RGB(0, 0, 255) kunhan vain muistetaan ennen looppia asettaa grafiikkapointteri jotenkin ruudun alkuun (x = 0, y = height/2), esim. Pset:llä:
PSet (0, ScaleHeight / 2), vbWhite For x = 0 To ScaleWidth Step 5 'piirretään vasemmalta oikeelle, siirrytään 5px kerralla y = Voimakkuus * Sin(x / AallonPituus) 'yy koordi Line -(x, ScaleHeight / 2 + y), RGB(0, 0, 255) 'pointsettaa Next
Njoo, tämähän on vain vinkki josta saa soveltaa itse :) ja siitä tulee ruma jos viivoittaa kun toi efekti josta koko näyttö tulee täyteen pisteitä on hieano :)
Niin ja kun testasin tätä pixeleillä niin se bugasi jotenki, en muista miten mutta tästähän saatte itse kokeilla :D
Hieno!
Hieno on kieltämättä. Luulin, että tuo laskukaava olisi paljon monimutkaisempi, mutta nythän tuosta jopa ymmärsin jotain. :)
Aika nätti.
Hahaa. Koko ruutu siniseksi ja aikaakin kului vain vajaa 7 min.
Makia :)
Hyvä Wukkopi x-d