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)
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)
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 -------------------------------