Re: [Logiciel 2D] Animatoon
Publié : lun. 11/juil./2011 10:48
sous quel os tu as écris ton logiciel ?blendman a écrit :je vais regarder ça avec seven, mais c'est bizarre y'a pas de raison de ne pas avoir de curseur
sous quel os tu as écris ton logiciel ?blendman a écrit :je vais regarder ça avec seven, mais c'est bizarre y'a pas de raison de ne pas avoir de curseur
Sous XP, mais j'ai seven, je ferai une compil et je testerai sous seven pour régler le problème.jbernard13 a écrit :sous quel os tu as écris ton logiciel ?blendman a écrit :je vais regarder ça avec seven, mais c'est bizarre y'a pas de raison de ne pas avoir de curseur
Ok merciblendman a écrit :Sous XP, mais j'ai seven, je ferai une compil et je testerai sous seven pour régler le problème.jbernard13 a écrit :sous quel os tu as écris ton logiciel ?blendman a écrit :je vais regarder ça avec seven, mais c'est bizarre y'a pas de raison de ne pas avoir de curseur
Code : Tout sélectionner
StartDrawing(CanvasOutput(#canvas))
DrawingMode(#PB_2DDrawing_Default)
Box(0,0,doc_w,doc_h,RGBA(255,255,255,255))
If backgroundCanvas = 1 ; si on a mis en background en fond , par exemple, un checkker ou un papier pour peindre)
DrawImage(ImageID(#canvasBG),0,0)
EndIf
; puis je dessine chaque calque
DrawingMode(#PB_2DDrawing_AlphaBlend)
ForEach layers() ; la liste de mes calques
If layers()\visible = 1 And layers()\opacity >0
DrawAlphaImage(ImageID(layers()\id),0,0,layers()\opacity)
EndIf
Next
StopDrawing()
Code : Tout sélectionner
layer_select=3
CreateImage(#layer_inferieur,doc_w,doc_h, 32 | #PB_Image_Transparent)
StartDrawing(ImageOutput(#layer_inferieur))
DrawingMode(#PB_2DDrawing_Default)
Box(0,0,doc_w,doc_h,RGBA(255,255,255,255))
If backgroundCanvas = 1 ; si on a mis en background en fond , par exemple, un checkker ou un papier pour peindre)
DrawImage(ImageID(#canvasBG),0,0)
EndIf
; puis je dessine chaque calque
DrawingMode(#PB_2DDrawing_AlphaBlend)
layer_i.u=0
ForEach layers() ; la liste de mes calques
If layers()\visible = 1 And layers()\opacity >0 and layer_i<layer_select
DrawAlphaImage(ImageID(layers()\id),0,0,layers()\opacity)
EndIf
layer_i+1
Next
StopDrawing()
Code : Tout sélectionner
layer_select=3
CreateImage(#layer_sup,doc_w,doc_h, 32 | #PB_Image_Transparent)
StartDrawing(ImageOutput(#layer_sup))
DrawingMode(#PB_2DDrawing_AlphaBlend)
layer_i.u=0
ForEach layers() ; la liste de mes calques
If layers()\visible = 1 And layers()\opacity >0 and layer_i>layer_select
DrawAlphaImage(ImageID(layers()\id),0,0,layers()\opacity)
EndIf
layer_i+1
Next
StopDrawing()
merciAr-S a écrit :Pas le temps de tester pour le moment mais un grand bravo pour ce travail.
oui, mais là, j'arrête de bosser sur ça, j'ai appris ce que je voulais (et le soft est utilisable tel quel, donc, je le modifierai de temps en temps, quand j'aurai le tempsstombretrooper a écrit :Woaw sa avance bien à ce que je vois.
Merci pour le code, ça doit marcher effectivement (en fonction de la position du calque notamment).Pour l'optimisation, pour le systèmes de tes 3 layers (je spécule le code que je lance n'est pas sur de marcher, j'ai pas test) :
Code : Tout sélectionner
layer_select=3
CreateImage(#layer_inferieur,doc_w,doc_h, 32 | #PB_Image_Transparent)
StartDrawing(ImageOutput(#layer_inferieur))
layer_i.u=0
ForEach layers() ; la liste de mes calques
If layers()\visible = 1 And layers()\opacity >0 and layer_i<layer_select
select layers\blendmode
case 1 ; normal
DrawingMode(#PB_2DDrawing_AlphaBlend)
case 2 ; multiply (produit)
DrawingMode(#PB_2DDrawing_CustomFilter)
CustomFilterCallback(@bm_multiply())
case 3 ; add/color doge (couleur densité -)
DrawingMode(#PB_2DDrawing_CustomFilter)
CustomFilterCallback(@bm_add())
case 4 ; color burn
DrawingMode(#PB_2DDrawing_CustomFilter)
CustomFilterCallback(@bm_colburn())
; etc.... pour chaque blendmode
endselect
DrawAlphaImage(ImageID(layers()\id),0,0,layers()\opacity)
EndIf
layer_i+1
Next
StopDrawing()
oui, bien sûr, mais ça rame quand même vite sur les grandes imagesSinon tu recalcules le canvas uniquement quand l'utilisateur fait des modifs dessus non ?
pour ton code ? oui, c'est pas mal du toutAtomo a écrit :Tu as testé les performances avec le debugger désactivé ?
ah oki. Ben oui, hélas.Atomo a écrit :Non, pour ton logiciel Animatoon