Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: QB: Pixelöinti + blur

Sami [29.04.2003 16:12:52]

#

Täällä oli jo pixelöinti, ja täällä oli myös jo blur, mutta mitään sellaista ei tainnut olla, missä molemmat olisi yhdessä.

' Yhdistetty pixelöinti ja blur
' Tämän pohjana on käytetty Eero Harmaalan Color bluria, pixelöintiosuus on
' täysin itse tehty

DEFINT A-Z
RANDOMIZE TIMER
SCREEN 13
CLS

ykoko = 200   ' Pehmennettävän alueen pystykoko
xkoko = 320   ' ----------------------vaaka----
pk = 2        ' Pixelin koko

FOR i = 1 TO 75  ' Hieman ympyröitä pixelöitäväksi
  CIRCLE (INT(RND * 320), INT(RND * 200)), INT(RND * 100), INT(RND * 256)
NEXT i

DIM pal(2, 255)

FOR v = 0 TO 255
OUT &H3C7, v
pal(0, v) = INP(&H3C9)  ' punanen
pal(1, v) = INP(&H3C9)  ' vihree
pal(2, v) = INP(&H3C9)  ' sininen
NEXT v

PRINT "Paina jotain näppäintä aloittaaksesi pixelöimisen"
DO
LOOP WHILE INKEY$ = ""

FOR y = 0 TO ykoko - 1 STEP pk
  FOR x = 0 TO xkoko - 1 STEP pk

    FOR x2 = x TO x + pk - 1   ' Käydään läpi pk*pk alueita
      FOR y2 = y TO y + pk - 1
        pv = POINT(x2, y2)     ' Katsoo alla olevan värin
        vkr = vkr + pal(0, pv)
        vkg = vkg + pal(1, pv)
        vkb = vkb + pal(2, pv)
      NEXT y2
    NEXT x2

    jakaja = pk * pk  ' Laskee luvun, millä väriarvot pitää jakaa
    vkr = INT(vkr / jakaja)
    vkg = INT(vkg / jakaja)
    vkb = INT(vkb / jakaja)

    le = 111
    FOR v = 0 TO 255
      eta = SQR(ABS(vkr - pal(0, v)) ^ 2 + ABS(vkg - pal(1, v)) ^ 2 + ABS(vkb - pal(2, v)) ^ 2)
      IF eta < le THEN le = eta: vari = v
    NEXT v

    LINE (x, y)-STEP(pk - 1, pk - 1), vari, BF  ' Piirtää ison pixelin
    IF INKEY$ <> "" THEN END  ' Jos joku ei vaikka jaksa odottaa loppuun asti
  NEXT x
NEXT y

LOCATE 1, 1
PRINT "Pixelöinti suoritettu"
DO
LOOP WHILE INKEY$ = ""
END

odys [18.06.2003 04:09:57]

#

Miksei tätä ole muka julkaistu? Tämähän on hyvä koodivinkki!

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta