Problème de scintillement avec un ImageGadget transparent

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
deeph
Messages : 33
Inscription : lun. 20/juil./2009 11:04
Contact :

Problème de scintillement avec un ImageGadget transparent

Message par deeph »

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 ?
Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Problème de scintillement avec un ImageGadget transparen

Message par Ar-S »

Salut,
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
deeph
Messages : 33
Inscription : lun. 20/juil./2009 11:04
Contact :

Re: Problème de scintillement avec un ImageGadget transparen

Message par deeph »

J'veux bien mais comme c'est une petite partie de mon éditeur de carte pour compiler ça le fait pas trop :/

En gros :

Image

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
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.
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

Re: Problème de scintillement avec un ImageGadget transparen

Message par G-Rom »

J'aimerai éviter d'utiliser l'API vu que j'aimerai bien que mon programme reste compatible linux.
Dans l'état actuel , ca ne marche pas. car les chemins de fichier ( les includebinary ) ne sont pas bons
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.


@+
deeph
Messages : 33
Inscription : lun. 20/juil./2009 11:04
Contact :

Re: Problème de scintillement avec un ImageGadget transparen

Message par deeph »

J'ai pas encore commencer à réellement adapter mon programme à linux, mais je sais que l'utilisation de l'API m'en empêchera...
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

Re: Problème de scintillement avec un ImageGadget transparen

Message par G-Rom »

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. :wink:
deeph
Messages : 33
Inscription : lun. 20/juil./2009 11:04
Contact :

Re: Problème de scintillement avec un ImageGadget transparen

Message par deeph »

Mouais... Enfin bon personne n'a de solution pour retirer la transparence d'une image ou éviter d'une autre façons ce scintillement ?
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

Re: Problème de scintillement avec un ImageGadget transparen

Message par G-Rom »

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...
deeph
Messages : 33
Inscription : lun. 20/juil./2009 11:04
Contact :

Re: Problème de scintillement avec un ImageGadget transparen

Message par deeph »

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 :

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
Ça change qu'dalle, le problème c'est donc que l'image est en 32bits :/
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

Re: Problème de scintillement avec un ImageGadget transparen

Message par G-Rom »

je boote sous windows et je regarde.
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

Re: Problème de scintillement avec un ImageGadget transparen

Message par G-Rom »

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...
deeph
Messages : 33
Inscription : lun. 20/juil./2009 11:04
Contact :

Re: Problème de scintillement avec un ImageGadget transparen

Message par deeph »

Nan mais pour la carte c'est normal, il faut de la transparence pour les couches, c'est pour le chipset que ça bug.
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

Re: Problème de scintillement avec un ImageGadget transparen

Message par G-Rom »

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.

@+
deeph
Messages : 33
Inscription : lun. 20/juil./2009 11:04
Contact :

Re: Problème de scintillement avec un ImageGadget transparen

Message par deeph »

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...
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

Re: Problème de scintillement avec un ImageGadget transparen

Message par G-Rom »

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])
Répondre