Avatar billede trick Nybegynder
13. februar 2003 - 09:26 Der er 3 kommentarer og
1 løsning

Tegne program (select/fill)

Hej jeg sidder og leger lidt med at lave et ”simpelt” tegne program i Director 8.0.
Her i mine spæde første forsøg er jeg bare gået ind og taget de pre-differeret muligheder der er som farvevalg, tegneredskabsvalg og slette muligheder, med det rækker jo ikke…

Jeg vil gerne have mulighed for at kunne ”select” et område og farveligge det.
Og gerne have mulighed for at have nogle tegninger liggende inde som jeg kan farveligge, her var min tanke at her kunne man jo dele billedet op i de områder man gerne vil have adskilt med det holder jo ikke.

Så det jeg i bud og grund spøger om er ”Hvordan kan man farveligge et område i et billede, hvor den stopper ved sort kant og eller hvordan kan man ”select” et område hvor den stopper ved sortkant eller anden farve?

Håber nogle kan hjælpe mig, ved godt det er en stor mundfuld…

Trick ;o)
Avatar billede trick Nybegynder
13. februar 2003 - 09:47 #2
Sorry mate, det er jo selve tegne delen den har jeg styr på, det er selve det at udfylde et område med en farve (som med malerspanden i Photo shop osv.) og at kunne selecte et område (som magic ward i Photoshop osv.)…

trick ;o)
Avatar billede kanding Nybegynder
13. februar 2003 - 10:12 #3
Prøv denne behavior: Drop det på et bitmap billed.
-------------------------- SCRIPT ---------------------------------
property pPctRef
property pSprLeft
property pSprTop
property pSprScalarX
property pSprScalarY
property pPixelActorListX
property pPixelActorListY
property pSpreadListX
property pSpreadListY

on beginSprite me
  mySpr = sprite me.spriteNum
  pPctRef = mySpr.member
  pSprLeft = mySpr.left
  pSprTop = mySpr.top
  pSprScalarX = float(pPctRef.width) / mySpr.width
  pSprScalarY = float(pPctRef.height) / mySpr.height
  pPixelActorListX = []
  pPixelActorListY = []
  pSpreadListX = [1, 0, -1, 0]
  pSpreadListY = [0, 1, 0, -1]
end

on mouseDown me
  me.initPaint()
end

on initPaint me, col
  if voidP(col) then
    col = random(16777216)
  end if
 
  sprX = the mouseH - pSprLeft
  sprY = the mouseV - pSprTop
  mbrX = integer(sprX * pSprScalarX) - 1
  mbrY = integer(sprY * pSprScalarY) - 1
 
  me.paintBucket(mbrX, mbrY, col)
end


on paintBucket me, aX, aY, aSourceColor
  targetColor = pPctRef.getPixel(aX, aY)
  pPctRef.setPixel(aX, aY, aSourceColor)
  append pPixelActorListX, aX
  append pPixelActorListY, aY
  repeat while count(pPixelActorListX)
    xCur = getAt(pPixelActorListX, 1)
    yCur = getAt(pPixelActorListY, 1)
    deleteAt pPixelActorListX, 1
    deleteAt pPixelActorListY, 1
    repeat with n = 1 to 4
      xTest = xCur + getAt(pSpreadListX, n)
      yTest = yCur + getAt(pSpreadListY, n)
      if pPctRef.getPixel(xTest, yTest) = targetColor then
        pPctRef.setPixel(xTest, yTest, aSourceColor)
        -- updateStage
        append pPixelActorListX, xTest
        append pPixelActorListY, yTest
      end if
    end repeat
  end repeat
end
------------------------- END SCRIPT -------------------------------
Avatar billede trick Nybegynder
13. februar 2003 - 10:20 #4
Nice, thanks mate..!
Er sikker på at jeg kan strikke det sammen som jeg vil ud fra den grundkode..

trick ;o)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester