Problème de scintillement avec un ImageGadget transparent
Problème de scintillement avec un ImageGadget transparent
Bonjour,
Voilà mon problème : j'ai une image transparente 32bits (PNG) que je charge dans un ImageGadget puis qu'ensuite je met à jour plus ou moins fréquemment, et c'est là que ça scintille de partout... Or quand j'utilise une image non transparente ça le fait pas :/
J'aimerai éviter d'utiliser l'API vu que j'aimerai bien que mon programme reste compatible linux.
Donc dans mon cas ce que j'aimerai faire c'est, une fois que l'image est chargée, retirer sa transparence puis l'afficher dans le gadget. Y-a-t-il moyen de faire ça sans passer par l'API ?
Voilà mon problème : j'ai une image transparente 32bits (PNG) que je charge dans un ImageGadget puis qu'ensuite je met à jour plus ou moins fréquemment, et c'est là que ça scintille de partout... Or quand j'utilise une image non transparente ça le fait pas :/
J'aimerai éviter d'utiliser l'API vu que j'aimerai bien que mon programme reste compatible linux.
Donc dans mon cas ce que j'aimerai faire c'est, une fois que l'image est chargée, retirer sa transparence puis l'afficher dans le gadget. Y-a-t-il moyen de faire ça sans passer par l'API ?
Re: Problème de scintillement avec un ImageGadget transparen
Salut,
Donne du code et une image.
Donne du code et une image.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Re: Problème de scintillement avec un ImageGadget transparen
J'veux bien mais comme c'est une petite partie de mon éditeur de carte pour compiler ça le fait pas trop :/
En gros :

Sinon pour tester : Editeur.7z (la carte casino par exemple bug)
L'éditeur bug et il manque plein de trucs mais c'est parce que je suis en train de le refaire avec une image pour la map plutôt qu'un écran. L'image du chipset est chargée dans init.pb, puis le rafraichissement du gadget se fait dans HandleChipset() de map.pb.
En gros :
Code : Tout sélectionner
LoadImage(#ChipsetImage, _map\chipset)
[...]
ScrollAreaGadget(#ChipsetScrollArea, #ChipsetScrollArea_x, #ChipsetScrollArea_y, #ChipsetScrollArea_w, #ChipsetScrollArea_h, ImageWidth(#ChipsetImage), ImageHeight(#ChipsetImage), 1, #PB_ScrollArea_Single|#PB_ScrollArea_Center)
ImageGadget(#ChipsetGadget, 0, 0, ImageWidth(#ChipsetImage), ImageHeight(#ChipsetImage), ImageID(#ChipsetImage))
CloseGadgetList()
[...]
CopyImage(#ChipsetImage, #ChipsetLayer_temp)
If StartDrawing(ImageOutput(#ChipsetLayer_temp))
If cursor\layer = 1
Draw_box(tile_layer1\x, tile_layer1\y, tile_layer1\w, tile_layer1\h)
ElseIf cursor\layer = 2
Draw_box(tile_layer2\x, tile_layer2\y, tile_layer2\w, tile_layer2\h)
ElseIf cursor\layer = 3
Draw_box(tile_layer3\x, tile_layer3\y, tile_layer3\w, tile_layer3\h)
EndIf
StopDrawing()
SetGadgetState(#ChipsetGadget, ImageID(#ChipsetLayer_temp))
EndIf
L'éditeur bug et il manque plein de trucs mais c'est parce que je suis en train de le refaire avec une image pour la map plutôt qu'un écran. L'image du chipset est chargée dans init.pb, puis le rafraichissement du gadget se fait dans HandleChipset() de map.pb.
Re: Problème de scintillement avec un ImageGadget transparen
Dans l'état actuel , ca ne marche pas. car les chemins de fichier ( les includebinary ) ne sont pas bonsJ'aimerai éviter d'utiliser l'API vu que j'aimerai bien que mon programme reste compatible linux.
ex :
"icons\tile_anim0.png" doit devenir "icons/tile_anim0.PNG" ( Linux est sensible à la case , et '\' doit être '/' pour que ca marche sur les 2 os)
les .ico ne fonctionne pas sous linux , c'est un format ms.
@+
Re: Problème de scintillement avec un ImageGadget transparen
J'ai pas encore commencer à réellement adapter mon programme à linux, mais je sais que l'utilisation de l'API m'en empêchera...
Re: Problème de scintillement avec un ImageGadget transparen
non , pas forcement , tu as forcement l'équivalent sous linux.
après si c'est pour de la "déco" , c'est pas bien grave.
après si c'est pour de la "déco" , c'est pas bien grave.

Re: Problème de scintillement avec un ImageGadget transparen
Mouais... Enfin bon personne n'a de solution pour retirer la transparence d'une image ou éviter d'une autre façons ce scintillement ?
Re: Problème de scintillement avec un ImageGadget transparen
le scintillement viens certainement du fait que tu update ton image ou sprite
ensuite , pour retiré la transparence , pas 36 solution , tu dessines un rectangle de la couleur que tu veut , ensuite tu pastes ton image par dessus le rectangle , en sortie , plus de couleur transparente...
ensuite , pour retiré la transparence , pas 36 solution , tu dessines un rectangle de la couleur que tu veut , ensuite tu pastes ton image par dessus le rectangle , en sortie , plus de couleur transparente...
Re: Problème de scintillement avec un ImageGadget transparen
Non le scintillement n'a pas lieu avec une image sans transparence, ça se vois en chargeant une autre map que army ou casino (24bits ?). J'vais voir si redessiner suffit.
Edit :
Ça change qu'dalle, le problème c'est donc que l'image est en 32bits :/
Edit :
Code : Tout sélectionner
If StartDrawing(ImageOutput(#ChipsetImage))
DrawingMode(#PB_2DDrawing_AlphaChannel)
Box(0, 0, ImageWidth(#ChipsetImage), ImageHeight(#ChipsetImage), RGBA(255, 128, 128, 255))
StopDrawing()
EndIf
Re: Problème de scintillement avec un ImageGadget transparen
je boote sous windows et je regarde.
Re: Problème de scintillement avec un ImageGadget transparen
Dans ton map.pb
il y a dans la procedure HandleMap() des DrawAlphaImage() qui ne servent à rien ( tu ne passe pas de paramètres pour la valeur ) remplace les par des drawimage() , ici ca ne scintille plus. Ton exe ne donne pas les même resultats que le code par contre j'ai une sorte de couche "rose" permanente...
il y a dans la procedure HandleMap() des DrawAlphaImage() qui ne servent à rien ( tu ne passe pas de paramètres pour la valeur ) remplace les par des drawimage() , ici ca ne scintille plus. Ton exe ne donne pas les même resultats que le code par contre j'ai une sorte de couche "rose" permanente...
Re: Problème de scintillement avec un ImageGadget transparen
Nan mais pour la carte c'est normal, il faut de la transparence pour les couches, c'est pour le chipset que ça bug.
Re: Problème de scintillement avec un ImageGadget transparen
j'en sais rien. de toute manière passé par une image pour faire une map c'est du bricolage.
passe par openwindowedscreen() ,vu que tu as l'air calé , tu pourras te bricolé une mini-gui qui te resservira dans ton jeu.
@+
passe par openwindowedscreen() ,vu que tu as l'air calé , tu pourras te bricolé une mini-gui qui te resservira dans ton jeu.
@+
Re: Problème de scintillement avec un ImageGadget transparen
J'utilise déjà un écran fenêtré dans cette version de mon éditeur, mais je trouve ça trop lourd (pas de redimensionnement auto avec la fenêtre etc...), utiliser une image c'est plus flexible j'trouve.
Enfin bref je pense que je vais faire autrement : j'ouvre une image "normale" RVB comme avant puis ensuite je modifie sa couleur RVB(255, 128, 128) en transparent pour pouvoir créer mes tiles pour la carte...
Enfin bref je pense que je vais faire autrement : j'ouvre une image "normale" RVB comme avant puis ensuite je modifie sa couleur RVB(255, 128, 128) en transparent pour pouvoir créer mes tiles pour la carte...
Re: Problème de scintillement avec un ImageGadget transparen
mais je trouve ça trop lourd (pas de redimensionnement auto avec la fenêtre etc...)
Resultat = OpenWindowedScreen(FenetreID, x, y, Largeur, Hauteur, RedimensionnementAuto, OffsetDroit, OffsetBas [, FlipMode])