Kirjoittaja: sooda
Kirjoitettu: 09.05.2004 – 09.05.2004
Tagit: grafiikka, demo, koodi näytille, vinkki
Hieanoja fadeja(neljä(4) kpl). Kannattaa rämplätä hiirtä oikein kunnolla kun ympyrät arvotaan erilaisiksi joka kerta. Klikkaa hiirellä niin vaihtuu.
Ainiin ja binaari: http://sooda.dy.fi/foo/feidi.exe
Private mikämenossa 'mikä hieano menossa
Private Sub Form_click()
'hiiren klikkauksesta vaihtuu kuva
mikämenossa = (mikämenossa + 1) Mod 4
hieano mikämenossa
End Sub
Private Sub Form_Load()
ScaleMode = 3 'pixelit käyttöön
AutoRedraw = True 'automaattinen uudelleenpiirto(?) päälle
Caption = "Hieano VäriSysteemi, Eikös Olekin?" 'otsikko oikein :)
BackColor = 0 'kaunis väri
hieano 0 'piirretään eka hieano
End Sub
Sub hieano(mikä)
pi = 4 * Atn(1)
Cls 'edellinen vek
If mikä = 0 Then 'katsotaan mikä hieano tehdään
'tämä fadettaa r:n, g:n ja b:n ja niiden sekoitukset palkeittain
Dim c(2) 'värit: c(0)=r, c(1)=g, c(2)=b
v = 1 'v niinkuin värijuttu :P
koko = (7 * 255) / ScaleWidth 'paljonko siirretään väriä kerralla
For moov = 0 To ScaleWidth 'piirretään vasemmalta oikeelle formi täyteen
For i = 0 To 2 'r,g ja b läpi
If v And 2 ^ i Then 'jos v ja värin bitti on päällä niin...
c(i) = c(i) + koko '...muutetaan väriä
If c(i) > 255 Then 'jos väripalkki on lopussa niin...
c(0) = 0 '...alustetaan arvot...
c(1) = 0
c(2) = 0
v = v + 1 '...ja mennään seuraavaan
End If
End If
Next
Line (moov, 0)-(moov, ScaleHeight), RGB(c(0), c(1), c(2)) 'piirretään väriviiva formin ylälaidasta alas
Next
ElseIf mikä = 1 Then
'sama kuin edellinen mutta ympyränä
Dim k(2) 'värit: k(0)=r, k(1)=g, k(2)=b
säde = ScaleWidth 'katsotaan halkaisija
If ScaleHeight < säde Then säde = ScaleHeight 'pallo ei saa mennä yli reunojen
säde = säde / 2 'säde on puolet halkaisijasta
koko = (7 * 255) / 360 'paljonko siirrytään kerralla jotta koko pallo täyttyisi
FillStyle = vbSolid 'jotta piirakan osat täyttyisi, pelkillä viivoilla...
'...ei tulisi pallon muotoa.
v = 1 'v niinkuin värijuttu :P
For moov = 0 To 360 'piirretään ymbyrä
For i = 0 To 2 'r,g ja b läpi
If v And 2 ^ i Then 'jos v ja värin bitti on päällä niin...
k(i) = k(i) + koko '...muutetaan väriä
If k(i) > 255 Then 'jos väripalkki on lopussa niin...
k(0) = 0 '...alustetaan arvot...
k(1) = 0
k(2) = 0
v = v + 1 '...ja mennään seuraavaan
End If
End If
Next
FillColor = RGB(k(0), k(1), k(2)) 'täyttöväri
'piirretään piirakkapala, moov*pi/180 tarkoittaa asteet radiaaneiksi
Circle (ScaleWidth / 2, ScaleHeight / 2), säde, FillColor, -viime_moov * pi / 180, -moov * pi / 180
viime_moov = moov 'viime x kohta jotta piirakkapala toimisi
Next
'joskus tehdään jännän näköinen kuvio jossa on vain reunat eli piirretään musta ymbura keskelle
If Int(Rnd + 0.5) Then Circle (ScaleWidth / 2, ScaleHeight / 2), säde - 70 * Rnd, 0
ElseIf mikä = 2 Then
'fadettaa niin että eri värit fadeaa toisiinsa...
koko = (8 * 255) / ScaleWidth 'paljonko siirretään väriä kerralla
v = 1: r = 0: g = 0: b = 0 'alustetaan muuttujat
For moov = 0 To ScaleWidth 'piirretään vasemmalta oikealle
Select Case v \ 255 'mikä värijutsku menossa
Case 0 'siirretään r päin
r = tark(r + koko)
Case 1 'siirretään g päin
r = tark(r - koko)
g = tark(g + koko)
Case 2 'siirretään b päin
g = tark(g - koko)
b = tark(b + koko)
Case 3 'siirretään rg päin
b = tark(b - koko)
r = tark(r + koko)
g = tark(g + koko)
Case 4 'siirretään gb päin
r = tark(r - koko)
b = tark(b + koko)
Case 5 'siirretään rb päin
r = tark(r + koko)
g = tark(g - koko)
Case 6 'siirretään rgb päin
g = tark(g + koko)
Case 7 'siirretään tyhjyyttä päin
r = tark(r - koko)
g = tark(g - koko)
b = tark(b - koko)
End Select
v = v + koko 'lisätään värivariaapelia
Line (moov, 0)-(moov, ScaleHeight), RGB(r, g, b) 'piirretään
Next
ElseIf mikä = 3 Then
'edellinen ympyränä...
säde = ScaleWidth 'katsotaan halkaisija
If ScaleHeight < säde Then säde = ScaleHeight 'pallo ei saa mennä yli reunojen
säde = säde / 2 'säde on puolet halkaisijasta
koko = (8 * 255) / 360
v = 1: r = 0: g = 0: b = 0
FillStyle = vbSolid
For moov = 0 To 360 'piirretään vasemmalta oikealle
Select Case v \ 255 'mikä värijutsku menossa
Case 0 'siirretään r päin
r = tark(r + koko)
Case 1 'siirretään g päin
r = tark(r - koko)
g = tark(g + koko)
Case 2 'siirretään b päin
g = tark(g - koko)
b = tark(b + koko)
Case 3 'siirretään rg päin
b = tark(b - koko)
r = tark(r + koko)
g = tark(g + koko)
Case 4 'siirretään gb päin
r = tark(r - koko)
b = tark(b + koko)
Case 5 'siirretään rb päin
r = tark(r + koko)
g = tark(g - koko)
Case 6 'siirretään rgb päin
g = tark(g + koko)
Case 7 'siirretään tyhjyyttä päin
r = tark(r - koko)
g = tark(g - koko)
b = tark(b - koko)
End Select
v = v + koko
FillColor = RGB(r, g, b)
Circle (ScaleWidth / 2, ScaleHeight / 2), säde, FillColor, -viime_moov * pi / 180, -moov * pi / 180
viime_moov = moov
Next
If Int(Rnd + 0.5) Then Circle (ScaleWidth / 2, ScaleHeight / 2), säde - 70 * Rnd, 0
End If
End Sub
Function tark(arvo) 'tarkistetaan jos joku arvo menee yli rajojen niin ei anneta sen
'värit rgb:ssä ei saa mennä alle 0 tai yli 255.
If arvo > 255 Then
tark = 255
ElseIf arvo < 0 Then
tark = 0
Else
tark = arvo
End If
End Function
Private Sub Form_Resize()
hieano mikämenossa 'kun formin koko vaihtuu niin kuva piirretään uusiksi
End SubKuinkas tuo exe tiedosto ei tarvitse mitään vb:n runtime tiedostoja?
Kyllä sen pitäisi tarvita, jos ne on sun koneella jo?
Ihan hienoja palettivariaatioita.
Ihan siisti...
Nätti.....
Hyvän näkönen...