Image et fenetre transparente [Résolu]

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

@Kwai chang caine,

désolé de te relancer,
mais c'est bien çà que tu as besoin de faire - en gros ?
Image
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

Excuse moi j'avais pas vu que tu avais répondu, tu es de parole, en plus 8)

FLYPE
Tu es un ANGE

C'est exactement ça que je voulais au niveau du rendu :10: (ya pas d'emoticone 100/10) :lol:

Juste une petite question ......Si je veux faire mon animation, car mon canon en plus d'etre transparent, il tire, le bougre....

Je peux en charger plusieures les unes au dessus des autres et les faires apparaitre et disparaitre afin que cela fasse comme un gif animé ????.

Car, quand j'ai triché, je te l'avais dit j'avais mis 6 minis fenetres découpées methode fenetre skinable, superposées les unes sur les autres et positionnées par rapport à ta superbe fenetre transparente et a l'aide de la fonction HideWindow(#NOMFENETRE, 1) je les faisait apparaitre les une apres les autres et au niveau du rendu ça donne un petit film d'un canon qui tire.
Le bleme c'est que apparement 6 fenetre skinable ça prend pas mal de ressources, d'ou mon appel au secour.

Encore mille merci FLYPE
Que deviendrais je sans vous. :cry:

Excelente journée à toi
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

comprends pas ! 8O

je lance ce listing de Flype
qui affiche une fenetre noir avec une image "purebasic" fond noir dedans
mais aucune transparence chez moi !!

Code : Tout sélectionner

; Code de Flype
; image transparente
; sur fenetre transparente

UsePNGImageDecoder()

Declare.l myCallback(hwnd.l, uMsg.l, wParam.l, lParam.l)

Global hImage.l = CatchImage(1, ?Image_01)
Global hImageList.l = ImageList_Create_(ImageWidth(1), ImageHeight(1), #ILC_COLOR32|#ILC_MASK, 1, 0)

ImageList_AddMasked_(hImageList, hImage, #Black)

If OpenWindow(0, 216, 0, 350, 250, "Test", #PB_Window_ScreenCentered|#PB_Window_SystemMenu)
    
    SetWindowCallback(@myCallback(), 0)
    
    Repeat
    Until WaitWindowEvent() = #PB_Event_CloseWindow
    
EndIf

ImageList_Destroy_(hImageList)

;-
;-

DataSection
Image_01: IncludeBinary "pb.png"
EndDataSection

;-
;-

Procedure.l myCallback(hwnd.l, uMsg.l, wParam.l, lParam.l)
    
    Protected hdc.l, result.l = #PB_ProcessPureBasicEvents
    
    Select uMsg
        
        Case #WM_PAINT
            hdc = BeginPaint_(hwnd, ps.PAINTSTRUCT)
            PaintDesktop_(hdc)
            ImageList_Draw_(hImageList, 0, hdc, 20, 20, #ILD_TRANSPARENT)
            EndPaint_(hwnd, ps)
            result = #True
            
        Case #WM_SIZING, #WM_MOVING
            InvalidateRect_(hwnd, 0, 1)
            
        Case #WM_ERASEBKGND
            result = #False
            
    EndSelect
    
    ProcedureReturn result
    
EndProcedure

;-
;- 
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

A tout hasard, remplace #ILC_COLOR32 par #ILC_COLOR24 !
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

pas mieux !! 8O
toujours une fenêtre noire , mais pas du tout transparente !! :?

Windows XP pro SP2
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

Alors la c'est une histoire de ouf !!!

Car chez moi elle est superbement transparente, je viens de recopier le code que tu donne.

J'ai aussi comme toi DOBRO (decidement) XP Pro SP2
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

voici ce que j'obtiens :


Image
Avatar de l’utilisateur
Jacobus
Messages : 1559
Inscription : mar. 06/avr./2004 10:35
Contact :

Message par Jacobus »

Est-ce que par hasard ton fond d'écran ne serait pas noir?
Quand tous les glands seront tombés, les feuilles dispersées, la vigueur retombée... Dans la morne solitude, ancré au coeur de ses racines, c'est de sa force maturité qu'il renaîtra en pleine magnificence...Jacobus.
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

Jacobus a écrit :Est-ce que par hasard ton fond d'écran ne serait pas noir?
c'est exactement ce à quoi je pense.


@kcc

concernant les animations. j'ai bricoler un truc tout pourri
mais déjà cela fonctionne-t-il chez vous ?

lien archive (pas gros) :
File:1->SpecialEffect.zip
Image

chez moi çà donne çà :
Image

j'ai pas le temps maintentant tout de suite d'expliquer comment çà marche.
mais on y reviendra c'est sûr.

Code : Tout sélectionner

;-
;-

Structure SPRITE
  x.l
  y.l
  xSpeed.l
  ySpeed.l
EndStructure
Structure SPRITELIST
  hWindow.l
  ImageList.l
  width.l
  height.l
  nSprite.l
  Sprite.SPRITE[99]
EndStructure

;-
;-

Macro SpriteList_Init(hSpriteList, Window, n, w = 48, h = 48)
  hSpriteList\width = w
  hSpriteList\height = h
  hSpriteList\nSprite = n
  hSpriteList\ImageList = ImageList_Create_(w, h, #ILC_COLOR32|#ILC_MASK, n, 0)
  hSpriteList\hWindow = WindowID(Window)
  SetTimer_(hSpriteList\hWindow, 1, 25, #Null)
EndMacro
Macro SpriteList_Free(hSpriteList)
  KillTimer_(hSpriteList\hWindow, 1)
  ImageList_Destroy_(hSpriteList\ImageList)
EndMacro
Macro SpriteList_Draw(hSpriteList, dc, index)
  ImageList_Draw_(hSpriteList\ImageList, index, dc, hSpriteList\Sprite[index]\x, hSpriteList\Sprite[index]\y, #ILD_TRANSPARENT)
EndMacro
Macro SpriteList_Add(hSpriteList, index, ImageLabel, AlphaColor = #White)
  CatchImage(image, ImageLabel)
  hSpriteList\Sprite[index]\xSpeed = Random(400)
  hSpriteList\Sprite[index]\ySpeed = Random(400)
  ResizeImage(image, hSpriteList\width, hSpriteList\height)
  ImageList_AddMasked_(hSpriteList\ImageList, ImageID(image), AlphaColor)
EndMacro

;-
;-

Global spr.SPRITELIST

;-
;-

Procedure.l myCallback(hwnd.l, uMsg.l, wParam.l, lParam.l)
  
  Protected ps.PAINTSTRUCT, i.l, hdc.l, result.l = #PB_ProcessPureBasicEvents
  
  Select uMsg
    
    Case #WM_PAINT
      
      hdc = BeginPaint_(hwnd, ps)
      
      PaintDesktop_(hdc)
      
      mx = WindowMouseX(1)
      my = WindowMouseY(1)
      
      For i = 0 To spr\nSprite 
        
        spr\Sprite[i]\x = mx + Random(10)
        spr\Sprite[i]\y = my + Random(10)
        spr\Sprite[i]\x + spr\Sprite[i]\xSpeed
        spr\Sprite[i]\y + spr\Sprite[i]\ySpeed
        
        SpriteList_Draw(spr, hdc, i)
        
      Next
      
      EndPaint_(hwnd, ps)
      
      result = #True
      
    Case #WM_MOUSEMOVE, #WM_MOVING, #WM_SIZING, #WM_TIMER ; Provoque un #WM_PAINT à la prochaine passe.
      InvalidateRect_(hwnd, 0, 1)
      
    Case #WM_ERASEBKGND
      result = #False
      
  EndSelect
  
  ProcedureReturn result
  
EndProcedure

;-
;-

#Window = 1

UsePNGImageDecoder()

If OpenWindow(#Window, 0, 0, 640, 480, "SpriteList", #PB_Window_ScreenCentered|#PB_Window_SystemMenu)
    
  SpriteList_Init(spr, #Window, 20)
  
  If spr\ImageList
    
    SpriteList_Add(spr,  1, ?SPRITE1)
    SpriteList_Add(spr,  2, ?SPRITE2)
    SpriteList_Add(spr,  3, ?SPRITE3)
    SpriteList_Add(spr,  4, ?SPRITE4)
    SpriteList_Add(spr,  5, ?SPRITE5)
    SpriteList_Add(spr,  6, ?SPRITE1)
    SpriteList_Add(spr,  7, ?SPRITE2)
    SpriteList_Add(spr,  8, ?SPRITE3)
    SpriteList_Add(spr,  9, ?SPRITE4)
    SpriteList_Add(spr, 10, ?SPRITE5)
    SpriteList_Add(spr, 11, ?SPRITE1)
    SpriteList_Add(spr, 12, ?SPRITE2)
    SpriteList_Add(spr, 13, ?SPRITE3)
    SpriteList_Add(spr, 14, ?SPRITE4)
    SpriteList_Add(spr, 15, ?SPRITE5)
    SpriteList_Add(spr, 16, ?SPRITE1)
    SpriteList_Add(spr, 17, ?SPRITE2)
    SpriteList_Add(spr, 18, ?SPRITE3)
    SpriteList_Add(spr, 19, ?SPRITE4)
    
    SetWindowCallback(@myCallback())
    
    Repeat
    Until WaitWindowEvent() = #PB_Event_CloseWindow
    
  EndIf
  
EndIf

SpriteList_Free(spr)

;-
;-

DataSection
SPRITE1: IncludeBinary "01.png"
SPRITE2: IncludeBinary "02.png"
SPRITE3: IncludeBinary "03.png"
SPRITE4: IncludeBinary "04.png"
SPRITE5: IncludeBinary "05.png"
EndDataSection

;-
;-

Image
Avatar de l’utilisateur
Jacobus
Messages : 1559
Inscription : mar. 06/avr./2004 10:35
Contact :

Message par Jacobus »

Sympa comme effet :lol: mais je me vois mal trimbaler cette grappe derrière mon curseur dans une appli :lol:

Sinon oui j'ai le même effet que ton image.
Quand tous les glands seront tombés, les feuilles dispersées, la vigueur retombée... Dans la morne solitude, ancré au coeur de ses racines, c'est de sa force maturité qu'il renaîtra en pleine magnificence...Jacobus.
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

@Flype

C'est rigolo, ces petites images :lol:

Par contre chez moi, elle n'ont pas un fond transparent et ça vibre un max.

Donc ça fait plein de petit carré qui vibrent et qui suivent la souris.
ça ne fait pas aussi joli que chez toi.

Si je suis le seul, c'est que j'ai encore fait une betise :oops:

Par contre je ne sais pas si tu essayais de m'aider avec ce code rigolo, mais l'animation que je voulais faire est fixe, c'est a dire un canon en bas de l'ecran qui tire, donc premiere image sortie de la fumée, deuxieme du feu, troisieme du boulet, quatrieme refumée, et cinquieme retour au canon sans fumée.

En les faisant défiler et selon la rapidité de la boucle on jurerait que le canon il tire un boulet sur le bureau.
Le probleme que tu as parfaitement compris c'etait que mon canon etait toujours entouré de ce satané cadre blanc ou d'une autre couleur mais une image carré quoi. :?

Avec ton super 2e code maintenant l'image est bien découpée et suis la fenetre geniale de ton 1er code.Donc mission accomplie.
Mais BB programmeur il croyais bettement que tu allais faire ça avec un image gadget simple et que donc il allait pouvoir se la peter en modifiant ce code en juxtaposant ces 5 images de canon et en les cachant les unes apres les autres pour faire l'effet de l'animation du canon qui tire.

BBprogrammeur est fort dépourvu car ton superbe code est encore une fois au dessus de ses moyens, car il a pas vu d'image gadget, donc il pleure encore une fois pour avoir un autre biberon mais animé.

Faites des gosses ...... :lol: :lol:
Dernière modification par Kwai chang caine le ven. 24/nov./2006 20:25, modifié 1 fois.
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

ca vibre c'est normal - c'est mon effet à la c.. avec des random().

les petits carrés c'est avec mes imagettes ?

il faut des images supportant l'alpha (PNG par ex) et mon code utilise la couleur #White (blanc) comme fond. Suffit de changer AlphaColor dans les lignes :

SpriteList_Add(hSpriteList, index, ImageLabel, AlphaColor = #White)
Image
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

excuse moi j'ai modifié mon post du dessus le temps que tu me réponde, ce n'est pas avec les tienne mais avec mon satané canon, je vais essayer autrement
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

Jacobus a écrit :Est-ce que par hasard ton fond d'écran ne serait pas noir?
ha bah si ! :D

mais moi j'avais une routine qui rendais la fenetre transparente meme sur une autre fenetre :D..
sur le bureau on voyais les icones ..
alors j'avais pensé... (oui je sais ça me réussi pas de penser :lol: )
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

on peut aussi s'amuser à cumuler les effets de ce post - çà peut etre marrant
:

http://purebasic.forum-gratuit.com/viewtopic.php?t=5375


@kcc
tu peux m'envoyer tes canons ?

(par contre je verrais çà que demain maintenant - ou ce soir très tard)
Image
Répondre