Image et fenetre transparente [Résolu]
- Kwai chang caine
- Messages : 6989
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
Excuse moi j'avais pas vu que tu avais répondu, tu es de parole, en plus
FLYPE
Tu es un ANGE
C'est exactement ça que je voulais au niveau du rendu
(ya pas d'emoticone 100/10)
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.
Excelente journée à toi

FLYPE
Tu es un ANGE
C'est exactement ça que je voulais au niveau du rendu


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.

Excelente journée à toi
comprends pas !
je lance ce listing de Flype
qui affiche une fenetre noir avec une image "purebasic" fond noir dedans
mais aucune transparence chez moi !!

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
;-
;-
- Kwai chang caine
- Messages : 6989
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
c'est exactement ce à quoi je pense.Jacobus a écrit :Est-ce que par hasard ton fond d'écran ne serait pas noir?
@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

chez moi çà donne çà :

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
;-
;-
Sympa comme effet
mais je me vois mal trimbaler cette grappe derrière mon curseur dans une appli
Sinon oui j'ai le même effet que ton image.


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.
- Kwai chang caine
- Messages : 6989
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
@Flype
C'est rigolo, ces petites images
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
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 ......

C'est rigolo, ces petites images

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

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


Dernière modification par Kwai chang caine le ven. 24/nov./2006 20:25, modifié 1 fois.
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)
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)
- Kwai chang caine
- Messages : 6989
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
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)
:
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)