Au secour SOLDAT,la v4.40 elle est encore méchante avec KCC

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Pour les fous de graphisme...la spirale infernale [résolu]

Message par Ar-S »

Il va adorer :D
~~~~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
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Pour les fous de graphisme...la spirale infernale [résolu]

Message par Kwai chang caine »

Tu crois :D J'espere... :roll:
Parfois, je me demande si y me prend pas pour un dingue :roll:
Remarque une admiration pareille pour le savoir, la sagesse et la competence....c'est pas des masses commun.

Autour de moi, j'entend des fans parler de michael jackson, mylene farmer, sylvie vartan, johnny hallyday....enfin que des gens que personne connais :?
J'ai jamais été fan de quelqu'un, quand j'y pense :roll:
Je suis fan de quelque chose, mais difficilement de quelqu'un..j'aime, ce qu'il fait, je respecte, mais de la à etre vraiment fan.... :roll:

J'aurais pu etre fan de grands disc jockey, mais ils etaient aussi inaccessibles que des stars :?
Remarque, y'avait pas internet non plus de mon temps :roll: (Tiens on dirait un vieux.....)

Et ben j'ai découvert ça avec la programmation :D
Moi mes stars, c'est FRED, SPARKIE, SROD, FLYPE, GNOZAL, NETMAESTRO, ..........etc .....j'suis pas difficile hein ???? :lol:

Je pense que ce qui m'a fait devenir FAN, c'est que je puisse leur parler....
Imagine pour moi c'est presque tous les jours, l'emission "Star a domicile" :D
Imagine qu'une gamine elle rentre chez elle et elle discute "coulosse" avec lorie, ou diam's et que ces dernieres soit toujours la pour la consoler et lui soigner ses petits bobos au coeur 8)

Bah moi, outre les réels bobos au coeurs que j'essaie de gerer moi-meme...enfin presque :oops:
J'ai aussi des bobos au "double-coeur" de mon pc :D

Et mes stars, ainsi que tous mes copains de ce forum et l'autre, il me font bien souvent des plaisirs, et me font passer de l'etat naturel de tristesse profonde, à l'explosion de joie, de l'etat de honte à l'etat de fierté......
Parfois meme, je sens poindre au coin de mon "zieu" une perle de pluie. :oops:

Et tout ça ...ça dure depuis 4 ans...
Je doit tout à l'informatique, et meme si elle me gonfle tous les jours, elle me le rend bien 8)

Peut etre qu'un jour, je passerais en alsace, et peut etre que je ferais le plein a une station, et peut etre qu'en face y'aura un petit jeune tout "maigue" avec un joli sourire et une gentillesse qui le caracterise....et peut etre que j'me dirais....y me dit "queque" chose ce gars....
Et quand il sera remonté dans sa voiture et a 2 km de moi.....surement que je m'aspergerais d'essence et je fumerais ma premiere clope, pour me remercier de ne pas l'avoir reconnu et salué a la hauteur de son rang :twisted:
Peut etre aussi au passage, que je batterais mon chien, ma femme et le gosse....pour pas m'avoir aussi aidé a le reconnaitre :D

Souvent je me dit, moi qui deteste les voyages et les nouvelles rencontres....et si j'allais au etats unis rencontrer (avec leur accord bien sur :? ) SPARKIE, ou en angleterre SROD, ou en alsace GNOZAL, nantes FLYPE ???
Bonjour le cadeau :lol:
Peut etre que quand je serais à la retraite ....... :roll:

D'un autre coté on doit tellement avoir l'air con de rencontrer quelqu'un que l'on admire tant :roll:
Qu'est ce qu'on peut lui dire ????? ......c'est quoi ta marque de lave linge ?????....il fait beau aujourd'hui ????? T'as de beaux yeux tu sais ?????
Aaaahhh non non...ça c'est gabin il l'a déja dit a michelle morgan
Le con...y m'a piqué une reflexion qui aurait à coup sur étonné :lol:

Enfin en attendant...notre FRED, il est revenu sur le forum français comme le messie....
alors je ne voudrais pas faire quoi que ce soit qui l'effraie a nouveau.....
Mais j'suis tellement fier et content de lui parler directement ....qu'une petite chansonnette me viens à l'esprit :

FREDAELLE est de retooooouuuuuur..... Aaaaalllleeeeeeelooooouuuuiyyyyya !!!!!
FREDAELLE est de retooooouuuuuur..... et on l'aime toooooouuuuujoooouurrrss !!!
:mrgreen:

Allez tout le monde chante derriere son ecran avec KCC !!!!!
On peut aussi danser....c'est pas interdit :D
Et meme DOBRO y peut prendre un "youcoutruclélé" et montrer dans les iles comment on l'aime notre FRED :D

Image

FREDAELLE est de retooooouuuuuur..... Aaaaalllleeeeeeelooooouuuuiyyyyya !!!!!
FREDAELLE est de retooooouuuuuur..... et on l'aime toooooouuuuujoooouurrrss !!! :mrgreen:
ImageLe bonheur est une route...
Pas une destination

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

Re: Pour les fous de graphisme...la spirale infernale [résolu]

Message par Backup »

:lol: :lol: il est dingue ! je le savais , il est dingue !
Avatar de l’utilisateur
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Re: Pour les fous de graphisme...la spirale infernale [résolu]

Message par Thyphoon »

Dobro a écrit ::lol: :lol: il est dingue ! je le savais , il est dingue !
+1 c'est un dou-dingue !! :D
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Pour les fous de graphisme...la spirale infernale [résolu]

Message par Kwai chang caine »

Merci.....merci beaucoup 8)
Mais j'en parlais à une des vaches qui entoure ma maison....et elle aussi quand je lui ai chanté ma chanson.....
Image
Elle doit aussi connaitre FRED 8O
Y m'epate ce FRED....y m'epatte :roll:
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Pour les fous de graphisme...la spirale infernale [résolu]

Message par Kwai chang caine »

Bon..KCC il a assez dansé, il a mal au pied :?

Maintenant c'est la periode des slows...alors KCC comme y peut pas draguer...et ben y se remet a programmer :D
J'ai posé aussi la question sur le US, car comme j'ai marié le splendide code français de TYPHOON avec le non moins splendide code anglais de NETMAESTRO et que ça m'a sorti un poupon digne des dieux 8O
Je suis presque le plus heureux des KCC du monde :D

Pourquoi presque ???
Parce que KCC, ecoutez bien...messieurs et messieurs....et ben KCC, il a utilisé les CallBacks tout seul, comme un grand, et il est arrivé a faire que la spirale elle soit ronde et dans l'anneau.
Mais ...car il y a un mais...evidemment comme toujours avec KCC...et ben on arrive a glisser une fenetre entre la dame et le monsieur :?
Et ça le maire il a dit que "c'etait pas le droit" quand on est marié :?

Donc si quinquin il a l'idée du siecle pour que le mari et la femme soit fideles...et ben vous ferez le bonheur d'un couple...et par la meme occasion de moi :mrgreen:

Voila le bouffon de l'anneau
http://erdsjb.free.fr/PureStorage/Provi ... neauOr.bmp

Et le contrat de mariage

Code : Tout sélectionner

; Code créé par NETMAESTRO et TYPHOON réuni pas KCC

Enumeration

 #FenetreAnneau
 #FenetreSpirale
 #ImageAnneau
 #Sprite3D
 #Sprite2D
 
EndEnumeration

Global HwndSpirale.l,HwndAnneau.l
Global HwndAnneau, hBrush, Region, Size

Image = LoadImage(#ImageAnneau, "AnneauOr.bmp")

Procedure CallBack(WND,Message,lParam,wParam)

 Result = #PB_ProcessPureBasicEvents 
 
 Select WND 
     
  Case HwndAnneau
  
   If Message = #WM_MOVE
   
    ResizeWindow(#FenetreSpirale, WindowX(#FenetreAnneau) + 25, WindowY(#FenetreAnneau) + 25, #PB_Ignore, #PB_Ignore)
    
   ElseIf Message = #WM_LBUTTONDOWN
   
    SendMessage_(WindowID(#FenetreAnneau), #WM_NCLBUTTONDOWN, #HTCAPTION, 0)
       
   EndIf
   
 EndSelect 
 
 ProcedureReturn Result
 
EndProcedure

Procedure GrabRegion(ImageID, TransColor) ; HBITMAP ImageID, COLORREF transcolor 

  ;=============================================== 
  ;                                              = 
  ;      Very fast bitmap -> region creator      = 
  ;      By netmaestro                           = 
  ;      Contributors: eesau, nico, flype        = 
  ;      June 26, 2007                           = 
  ;                                              =
  ;            ***  IMPORTANT  ***               =
  ;                                              =
  ;      transcolor must be in BGR format        = 
  ;                                              =
  ;=============================================== 
  
  Structure RECTARRAY
    rect.RECT[0] 
  EndStructure 

  GetObject_(ImageID, SizeOf(BITMAP), @bmp.BITMAP) 
  
  Protected width       = bmp\bmWidth 
  Protected height      = bmp\bmHeight 
  Protected hVisibleRgn = CreateRectRgn_(0, 0, width, height) 
  
  BmiInfo.BITMAPINFOHEADER 
  With BmiInfo 
    \biSize         = SizeOf(BITMAPINFOHEADER) 
    \biWidth        = width 
    \biHeight       = -height 
    \biPlanes       = 1 
    \biBitCount     = 32 
    \biCompression  = #BI_RGB 
  EndWith    
  
  rowbytes =  SizeOf(LONG)*width 

  *ColorBits = AllocateMemory(rowbytes*height) 
  
  hDC   = GetWindowDC_(#Null) 
  iRes  = GetDIBits_(hDC, ImageID, 0, height, *ColorBits, @bmiInfo, #DIB_RGB_COLORS) 
  ReleaseDC_(#Null, hDC) 
  
  Structure_Max=(width*height*16)+SizeOf(RGNDATAHEADER) 
  *Buffer.RGNDATAHEADER=AllocateMemory(Structure_Max) 
  *rd.RECTARRAY=*Buffer+SizeOf(RGNDATAHEADER) 

  rectcount = 0 
  For y=0 To height-1 
    pxcount=0 
    For x=0 To rowbytes-1 Step 4 
      *px.LONG = *ColorBits + rowbytes * y + x 
      If *px\l = transcolor  
        transcount = 1 : firsttrans = pxcount 
        x+SizeOf(LONG) : *px.LONG = *ColorBits + rowbytes * y + x 
        While *px\l = transcolor And x <= rowbytes-1
          transcount+1 : pxcount+1 : x+SizeOf(LONG) 
          *px = *ColorBits + rowbytes * y + x 
        Wend 
        x-SizeOf(LONG) : *px.LONG = *ColorBits + rowbytes * y + x 
        *rd\rect[rectcount]\left   = firsttrans            
        *rd\rect[rectcount]\top    = y                     
        *rd\rect[rectcount]\right  = firsttrans+transcount 
        *rd\rect[rectcount]\bottom = y+1      
        rectcount+1 
      EndIf 
      pxcount+1 
    Next 
  Next 
  
  With *Buffer 
    \dwSize         = SizeOf(RGNDATAHEADER) 
    \iType          = #RDH_RECTANGLES 
    \nCount         = rectcount 
    \nRgnSize       = rectcount * SizeOf(RECT) 
    \rcBound\left   = 0
    \rcBound\top    = 0
    \rcBound\right  = width
    \rcBound\bottom = height
  EndWith 
  
  RegionSize=SizeOf(RGNDATAHEADER)+(rectcount * SizeOf(RECT)) 
  hTransparentRgn = ExtCreateRegion_(0, RegionSize, *Buffer) 
  CombineRgn_(hVisibleRgn, hVisibleRgn, hTransparentRgn, #RGN_XOR) 
    
  FreeMemory(*Buffer) 
  FreeMemory(*ColorBits) 
  DeleteObject_(hTransparentRgn) 
  
  ProcedureReturn hVisibleRgn 
  
EndProcedure 

Procedure FenetreSpirale()
 
 If InitSprite() = 0 Or InitSprite3D() = 0
  MessageRequester("Erreur", "Impossible d'ouvrir l'écran et l'environnement nécessaire aux sprites !")
  End
 EndIf
    
 If OpenWindow(#FenetreSpirale, 0, 0, 240, 240, "", #PB_Window_BorderLess|#PB_Window_ScreenCentered)
  
  Region = CreateEllipticRgn_(0, 0, WindowWidth(#FenetreSpirale), WindowHeight(#FenetreSpirale))
  SetWindowRgn_(WindowID(#FenetreSpirale), Region, #True)
  DeleteObject_(Region)
  SetWindowCallback(@CallBack())
    
  If OpenWindowedScreen(WindowID(#FenetreSpirale), 0, 0, 240, 240, 0, 0, 0)
   
   Size = Sqr(240 * 240 + 240 * 240)
   CreateSprite(#Sprite2D, Size, Size, #PB_Sprite_Texture)
   
   If StartDrawing(SpriteOutput(#Sprite2D))
     
     For z = 0 To 2800
      x = Cos(z * #PI / 180) * z / 15
      y = Sin(z * #PI / 180) * z / 15
      Circle(Size / 2 + x, Size / 2 + y, 1 + z / 250, RGB(255,255,255))
     Next
   
    StopDrawing()
    CreateSprite3D(#Sprite3D, #Sprite2D)
    
   EndIf
      
   Delay(100)
   hBrush = CreatePatternBrush_(ImageID(#ImageAnneau))
   HwndAnneau = OpenWindow(#FenetreAnneau, WindowX(#FenetreSpirale), WindowY(#FenetreSpirale), ImageWidth(#ImageAnneau), ImageHeight(#ImageAnneau), "",#PB_Window_BorderLess|#PB_Window_ScreenCentered|#PB_Window_Invisible)
   SetClassLongPtr_(WindowID(#FenetreAnneau), #GCL_HBRBACKGROUND, hBrush)
   SetWindowRgn_(WindowID(#FenetreAnneau), GrabRegion(ImageID(#ImageAnneau), RGB(255,255,255)), #True)
   SetWindowLong_(WindowID(#FenetreAnneau), #GWL_EXSTYLE, #WS_EX_TOOLWINDOW) ; Cacher de la barre des taches
   StickyWindow(#FenetreAnneau, #True)
   HideWindow(#FenetreAnneau, #False)
   Delay(100)
      
  Else
   
   MessageRequester("Erreur", "Impossible d'ouvrir un écran dans la fenêtre!", 0)
   End
   
  EndIf
  
 EndIf
 
EndProcedure

FenetreSpirale()

Repeat 

 Evenement = WaitWindowEvent(1)
 FlipBuffers() 
 ClearScreen(RGB(0, 0, 0))
 Start3D()
 RotateSprite3D(#Sprite3D, ElapsedMilliseconds() / 5, 0)
 DisplaySprite3D(#Sprite3D, (240 - Size) / 2, (240 - Size) / 2)
 Stop3D()
  
Until GetAsyncKeyState_(#VK_ESCAPE)
Merci de votre aide
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
PAPIPP
Messages : 534
Inscription : sam. 23/févr./2008 17:58

Re: Pour les fous de graphisme...la spirale infernale

Message par PAPIPP »

Bonjour Kcc
Peut- être une solution pour avoir les 2 images toujours collées

Code : Tout sélectionner

; Code créé par NETMAESTRO et TYPHOON réuni pas KCC

Enumeration
  
  #FenetreAnneau
  #FenetreSpirale
  #ImageAnneau
  #Sprite3D
  #Sprite2D
  
EndEnumeration

Global HwndSpirale.l,HwndAnneau.l
Global HwndAnneau,hBrush,Region,Size

Image=LoadImage(#ImageAnneau,"L:\program files\PB440\PB440\AnneauOr.bmp"); <= à changer suivant votre chemin *************************************
; Debug image
Procedure CallBack(WND,Message,lParam,wParam)
  
  Result=#PB_ProcessPureBasicEvents
  
  Select WND
      
    Case HwndAnneau
      
      If Message=#WM_MOVE
        
        ResizeWindow(#FenetreSpirale,WindowX(#FenetreAnneau)+25,WindowY(#FenetreAnneau)+25,#PB_Ignore,#PB_Ignore)
        
      ElseIf Message=#WM_LBUTTONDOWN
        
        SendMessage_(WindowID(#FenetreAnneau),#WM_NCLBUTTONDOWN,#HTCAPTION,0)
        
      EndIf
      
  EndSelect
  
  ProcedureReturn Result
  
EndProcedure

Procedure GrabRegion(ImageID,TransColor) ; HBITMAP ImageID, COLORREF transcolor
  
  ;===============================================
  ;                                              =
  ;      Very fast bitmap -> region creator      =
  ;      By netmaestro                           =
  ;      Contributors: eesau, nico, flype        =
  ;      June 26, 2007                           =
  ;                                              =
  ;            ***  IMPORTANT  ***               =
  ;                                              =
  ;      transcolor must be in BGR format        =
  ;                                              =
  ;===============================================
  
  Structure RECTARRAY
    rect.RECT[0]
  EndStructure
  
  GetObject_(ImageID,SizeOf(BITMAP),@bmp.BITMAP)
  
  Protected width=bmp\bmWidth
  Protected height=bmp\bmHeight
  Protected hVisibleRgn=CreateRectRgn_(0,0,width,height)
  
  BmiInfo.BITMAPINFOHEADER
  With BmiInfo
    \biSize=SizeOf(BITMAPINFOHEADER)
    \biWidth=width
    \biHeight=-height
    \biPlanes=1
    \biBitCount=32
    \biCompression=#BI_RGB
  EndWith
  
  rowbytes=SizeOf(LONG)*width
  
  *ColorBits=AllocateMemory(rowbytes*height)
  
  hDC=GetWindowDC_(#Null)
  iRes=GetDIBits_(hDC,ImageID,0,height,*ColorBits,@bmiInfo,#DIB_RGB_COLORS)
  ReleaseDC_(#Null,hDC)
  
  Structure_Max=(width*height*16)+SizeOf(RGNDATAHEADER)
  *Buffer.RGNDATAHEADER=AllocateMemory(Structure_Max)
  *rd.RECTARRAY=*Buffer+SizeOf(RGNDATAHEADER)
  
  rectcount=0
  For y=0 To height-1
    pxcount=0
    For x=0 To rowbytes-1 Step 4
      *px.LONG=*ColorBits+rowbytes*y+x
      If *px\l=transcolor
        transcount=1:firsttrans=pxcount
        x+SizeOf(LONG) :*px.LONG=*ColorBits+rowbytes*y+x
        While *px\l=transcolor And x<=rowbytes-1
          transcount+1:pxcount+1:x+SizeOf(LONG)
          *px=*ColorBits+rowbytes*y+x
        Wend
        x-SizeOf(LONG) :*px.LONG=*ColorBits+rowbytes*y+x
        *rd\rect[rectcount]\left=firsttrans
        *rd\rect[rectcount]\top=y
        *rd\rect[rectcount]\right=firsttrans+transcount
        *rd\rect[rectcount]\bottom=y+1
        rectcount+1
      EndIf
      pxcount+1
    Next
  Next
  
  With *Buffer
    \dwSize=SizeOf(RGNDATAHEADER)
    \iType=#RDH_RECTANGLES
    \nCount=rectcount
    \nRgnSize=rectcount*SizeOf(RECT)
    \rcBound\left=0
    \rcBound\top=0
    \rcBound\right=width
    \rcBound\bottom=height
  EndWith
  
  RegionSize=SizeOf(RGNDATAHEADER)+(rectcount*SizeOf(RECT))
  hTransparentRgn=ExtCreateRegion_(0,RegionSize,*Buffer)
  CombineRgn_(hVisibleRgn,hVisibleRgn,hTransparentRgn,#RGN_XOR)
  
  FreeMemory(*Buffer)
  FreeMemory(*ColorBits)
  DeleteObject_(hTransparentRgn)
  
  ProcedureReturn hVisibleRgn
  
EndProcedure

Procedure FenetreSpirale()
  
  If InitSprite()=0 Or InitSprite3D()=0
    MessageRequester("Erreur","Impossible d'ouvrir l'écran et l'environnement nécessaire aux sprites !")
    End
  EndIf
  
  If OpenWindow(#FenetreSpirale,0,0,240,240,"",#PB_Window_BorderLess | #PB_Window_ScreenCentered)
    
    Region=CreateEllipticRgn_(0,0,WindowWidth(#FenetreSpirale),WindowHeight(#FenetreSpirale))
    SetWindowRgn_(WindowID(#FenetreSpirale),Region,#True)
    DeleteObject_(Region)
    SetWindowCallback(@CallBack())
    
    If OpenWindowedScreen(WindowID(#FenetreSpirale),0,0,240,240,0,0,0)
      
      Size=Sqr(240*240+240*240)
      CreateSprite(#Sprite2D,Size,Size,#PB_Sprite_Texture)
      
      If StartDrawing(SpriteOutput(#Sprite2D))
          
          For z=0 To 2800
            x=Cos(z*#PI/180)*z/15
            y=Sin(z*#PI/180)*z/15
            Circle(Size/2+x,Size/2+y,1+z/250,RGB(255,255,255))
          Next
          
        StopDrawing()
        CreateSprite3D(#Sprite3D,#Sprite2D)
        
      EndIf
      
      Delay(100)
      hBrush=CreatePatternBrush_(ImageID(#ImageAnneau))
      HwndAnneau=OpenWindow(#FenetreAnneau,WindowX(#FenetreSpirale),WindowY(#FenetreSpirale),ImageWidth(#ImageAnneau),ImageHeight(#ImageAnneau),"",#PB_Window_BorderLess | #PB_Window_ScreenCentered | #PB_Window_Invisible)
      SetClassLongPtr_(WindowID(#FenetreAnneau),#GCL_HBRBACKGROUND,hBrush)
      SetWindowRgn_(WindowID(#FenetreAnneau),GrabRegion(ImageID(#ImageAnneau),RGB(255,255,255)),#True)
      SetWindowLong_(WindowID(#FenetreAnneau),#GWL_EXSTYLE,#WS_EX_TOOLWINDOW) ; Cacher de la barre des taches
;       StickyWindow(#FenetreAnneau,#True)
      StickyWindow(#FenetreAnneau,#False) ; <= c'est ici  ***************************************** pour garder les 2 images collées
      HideWindow(#FenetreAnneau,#False)
      Delay(100)
      
    Else
      
      MessageRequester("Erreur","Impossible d'ouvrir un écran dans la fenêtre!",0)
      End
      
    EndIf
    
  EndIf
  
EndProcedure

FenetreSpirale()

Repeat
  
  Evenement=WaitWindowEvent(1)
  FlipBuffers()
  ClearScreen(RGB(0,0,0))
  Start3D()
    RotateSprite3D(#Sprite3D,ElapsedMilliseconds()/5,0)
    DisplaySprite3D(#Sprite3D, (240-Size)/2, (240-Size)/2)
  Stop3D()
  
Until GetAsyncKeyState_(#VK_ESCAPE)
A+
Il est fort peu probable que les mêmes causes ne produisent pas les mêmes effets.(Einstein)
Et en logique positive cela donne.
Il est très fortement probable que les mêmes causes produisent les mêmes effets.
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Pour les fous de graphisme...la spirale infernale

Message par Kwai chang caine »

Merci beaucoup PAPIPP de ton aide

Effectivement tu as trouvé.......la moitié de la solution
J'ai sauté de joie, puis j'etais dégouté car je me suis aperçu d'une chose

Quand tu deplace une fenetre ça marche de la balle, elle ne se glisse plus entre les deux.
Top cool trop de la balle :D

Mais quand tu deplace l'anneau....et ben "GROSSEU GADASDROFEU" les fenetres se glissent entre les deux a nouveau :(
Roohhh !!!! qu'elles sont vilaines ces fenetres !!!!! elles sont d'un sans gene :?

Decidement, je mobilise la moitié des programmeurs de la terre avec ma connerie de fenetres :oops:
Mais encore merci beaucoup, d'avoir perdu du temps pour m'aider 8)
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
PAPIPP
Messages : 534
Inscription : sam. 23/févr./2008 17:58

Re: Pour les fous de graphisme...la spirale infernale

Message par PAPIPP »

Bonjour KCC
Encore plus proche du résultat final !!

Code : Tout sélectionner

; Code créé par NETMAESTRO et TYPHOON réuni pas KCC

Enumeration
  
  #FenetreAnneau
  #FenetreSpirale
  #ImageAnneau
  #Sprite3D
  #Sprite2D
  
EndEnumeration

Global HwndSpirale.l,HwndAnneau.l
; Global HwndAnneau,hBrush,Region,Size
Global hBrush,Region,Size

Image=LoadImage(#ImageAnneau,"L:\program files\PB440\PB440\AnneauOr.bmp")
; Debug image
Procedure CallBack(WND,Message,lParam,wParam)
  
  Result=#PB_ProcessPureBasicEvents

  Select WND
      
    Case HwndAnneau
      
      If Message=#WM_MOVE
        
        ResizeWindow(#FenetreSpirale,WindowX(#FenetreAnneau)+25,WindowY(#FenetreAnneau)+25,#PB_Ignore,#PB_Ignore)
       
      ElseIf Message=#WM_LBUTTONDOWN

        StickyWindow(#FenetreSpirale,#False)
        SendMessage_(WindowID(#FenetreAnneau),#WM_NCLBUTTONDOWN,#HTCAPTION,0)
        StickyWindow(#FenetreAnneau,#False)
      ElseIf Message=#WM_LBUTTONUP
        StickyWindow(#FenetreSpirale,#False)
;         SendMessage_(WindowID(#FenetreAnneau),#WM_NCLBUTTONDOWN,#HTCAPTION,0)
        StickyWindow(#FenetreAnneau,#False)


      EndIf
      
  EndSelect
  
  ProcedureReturn Result
  
EndProcedure

Procedure GrabRegion(ImageID,TransColor) ; HBITMAP ImageID, COLORREF transcolor
  
  ;===============================================
  ;                                              =
  ;      Very fast bitmap -> region creator      =
  ;      By netmaestro                           =
  ;      Contributors: eesau, nico, flype        =
  ;      June 26, 2007                           =
  ;                                              =
  ;            ***  IMPORTANT  ***               =
  ;                                              =
  ;      transcolor must be in BGR format        =
  ;                                              =
  ;===============================================
  
  Structure RECTARRAY
    rect.RECT[0]
  EndStructure
  
  GetObject_(ImageID,SizeOf(BITMAP),@bmp.BITMAP)
  
  Protected width=bmp\bmWidth
  Protected height=bmp\bmHeight
  Protected hVisibleRgn=CreateRectRgn_(0,0,width,height)
  
  BmiInfo.BITMAPINFOHEADER
  With BmiInfo
    \biSize=SizeOf(BITMAPINFOHEADER)
    \biWidth=width
    \biHeight=-height
    \biPlanes=1
    \biBitCount=32
    \biCompression=#BI_RGB
  EndWith
  
  rowbytes=SizeOf(LONG)*width
  
  *ColorBits=AllocateMemory(rowbytes*height)
  
  hDC=GetWindowDC_(#Null)
  iRes=GetDIBits_(hDC,ImageID,0,height,*ColorBits,@bmiInfo,#DIB_RGB_COLORS)
  ReleaseDC_(#Null,hDC)
  
  Structure_Max=(width*height*16)+SizeOf(RGNDATAHEADER)
  *Buffer.RGNDATAHEADER=AllocateMemory(Structure_Max)
  *rd.RECTARRAY=*Buffer+SizeOf(RGNDATAHEADER)
  
  rectcount=0
  For y=0 To height-1
    pxcount=0
    For x=0 To rowbytes-1 Step 4
      *px.LONG=*ColorBits+rowbytes*y+x
      If *px\l=transcolor
        transcount=1:firsttrans=pxcount
        x+SizeOf(LONG) :*px.LONG=*ColorBits+rowbytes*y+x
        While *px\l=transcolor And x<=rowbytes-1
          transcount+1:pxcount+1:x+SizeOf(LONG)
          *px=*ColorBits+rowbytes*y+x
        Wend
        x-SizeOf(LONG) :*px.LONG=*ColorBits+rowbytes*y+x
        *rd\rect[rectcount]\left=firsttrans
        *rd\rect[rectcount]\top=y
        *rd\rect[rectcount]\right=firsttrans+transcount
        *rd\rect[rectcount]\bottom=y+1
        rectcount+1
      EndIf
      pxcount+1
    Next
  Next
  
  With *Buffer
    \dwSize=SizeOf(RGNDATAHEADER)
    \iType=#RDH_RECTANGLES
    \nCount=rectcount
    \nRgnSize=rectcount*SizeOf(RECT)
    \rcBound\left=0
    \rcBound\top=0
    \rcBound\right=width
    \rcBound\bottom=height
  EndWith
  
  RegionSize=SizeOf(RGNDATAHEADER)+(rectcount*SizeOf(RECT))
  hTransparentRgn=ExtCreateRegion_(0,RegionSize,*Buffer)
  CombineRgn_(hVisibleRgn,hVisibleRgn,hTransparentRgn,#RGN_XOR)
  
  FreeMemory(*Buffer)
  FreeMemory(*ColorBits)
  DeleteObject_(hTransparentRgn)
  
  ProcedureReturn hVisibleRgn
  
EndProcedure

Procedure FenetreSpirale()
  
  If InitSprite()=0 Or InitSprite3D()=0
    MessageRequester("Erreur","Impossible d'ouvrir l'écran et l'environnement nécessaire aux sprites !")
    End
  EndIf
  
  If OpenWindow(#FenetreSpirale,0,0,240,240,"",#PB_Window_BorderLess | #PB_Window_ScreenCentered)
    
    Region=CreateEllipticRgn_(0,0,WindowWidth(#FenetreSpirale),WindowHeight(#FenetreSpirale))
    SetWindowRgn_(WindowID(#FenetreSpirale),Region,#True)
    DeleteObject_(Region)
    SetWindowCallback(@CallBack())
    
    If OpenWindowedScreen(WindowID(#FenetreSpirale),0,0,240,240,0,0,0)
      
      Size=Sqr(240*240+240*240)
      CreateSprite(#Sprite2D,Size,Size,#PB_Sprite_Texture)
      
      If StartDrawing(SpriteOutput(#Sprite2D))
          
          For z=0 To 2800
            x=Cos(z*#PI/180)*z/15
            y=Sin(z*#PI/180)*z/15
            Circle(Size/2+x,Size/2+y,1+z/250,RGB(255,255,255))
          Next
          
        StopDrawing()
        CreateSprite3D(#Sprite3D,#Sprite2D)
        
      EndIf
      
      Delay(100)
      hBrush=CreatePatternBrush_(ImageID(#ImageAnneau))
      HwndAnneau=OpenWindow(#FenetreAnneau,WindowX(#FenetreSpirale),WindowY(#FenetreSpirale),ImageWidth(#ImageAnneau),ImageHeight(#ImageAnneau),"",#PB_Window_BorderLess | #PB_Window_ScreenCentered | #PB_Window_Invisible)
      SetClassLongPtr_(WindowID(#FenetreAnneau),#GCL_HBRBACKGROUND,hBrush)
      SetWindowRgn_(WindowID(#FenetreAnneau),GrabRegion(ImageID(#ImageAnneau),RGB(255,255,255)),#True)
      SetWindowLong_(WindowID(#FenetreAnneau),#GWL_EXSTYLE,#WS_EX_TOOLWINDOW) ; Cacher de la barre des taches
;       StickyWindow(#FenetreAnneau,#True)
      StickyWindow(#FenetreAnneau,#False) ; <= c'est ici  ***************************************** pour garder les 2 images collées
      HideWindow(#FenetreAnneau,#False)
      Delay(100)
      
    Else
      
      MessageRequester("Erreur","Impossible d'ouvrir un écran dans la fenêtre!",0)
      End
      
    EndIf
    
  EndIf
  
EndProcedure

FenetreSpirale()

Repeat
  WWE = WaitWindowEvent(1)
  ;WE = WindowEvent(); ne pas mettre cette fonction en service sous risque de dysfonctionnement
  Fenetre = EventWindow()
  EG = EventGadget()
  ET = EventType()
  EM = EventMenu()
  EWP = EventwParam()
  ELP = EventlParam()
If fenetre=#FenetreSpirale And  EWP<>MEWP
        StickyWindow(#FenetreSpirale,#False)
;         SendMessage_(WindowID(#FenetreAnneau),#WM_NCLBUTTONDOWN,#HTCAPTION,0)
        StickyWindow(#FenetreAnneau,#False)
EndIf  
  FlipBuffers()
  ClearScreen(RGB(0,0,0))
  Start3D()
    RotateSprite3D(#Sprite3D,ElapsedMilliseconds()/5,0)
    DisplaySprite3D(#Sprite3D, (240-Size)/2, (240-Size)/2)
  Stop3D()
    MWWE = WWE
  ;WE = WindowEvent(); ne pas mettre cette fonction en service sous risque de dysfonctionnement
  MFenetre = Fenetre
  MEG = EG
  MET = ET
  MEM = EM
  MEWP = EWP
  MELP = ELP

Until GetAsyncKeyState_(#VK_ESCAPE)
A+
Il est fort peu probable que les mêmes causes ne produisent pas les mêmes effets.(Einstein)
Et en logique positive cela donne.
Il est très fortement probable que les mêmes causes produisent les mêmes effets.
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Pour les fous de graphisme...la spirale infernale

Message par Kwai chang caine »

Nickel cette fois ça marche :D
T'es un chef PAPIPP

Dis donc cette valse de sticky 8O
J'aurais pas osé en mettre autant ...
Moi j'mattendais a une API de la mort, mais quand on peut faire simple....c'est encore mieux :wink:

C'est génial, je l'ai sigogné dans tous les sens et ça marche...a moins que y'a un truc que j'ai pas pensé a faire...mais autrement c'est exactement ce que je cherchais 8)

Bon reste a l'inclure dans le reste du programme pour voir si y'a pas un truc qui coince...et c'est nickel

Encore merci d'avoir pris de ton temps pour m'aider
Je te souhaite une excelente journée
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
PAPIPP
Messages : 534
Inscription : sam. 23/févr./2008 17:58

Re: Pour les fous de graphisme...la spirale infernale

Message par PAPIPP »

Bonjour Kcc
Kwai chang caine a écrit : Dis donc cette valse de sticky
J'aurais pas osé en mettre autant ...
Moi j'mattendais a une API de la mort, mais quand on peut faire simple....c'est encore mieux :wink:
Quand on aime on ne compte pas !
En fait je n'ai pas trouvé d'autre méthode pour placer les deux fenêtres dans l'ordre
et dans toutes les cas d'événements
Il reste toutefois un léger retard pour obtenir la spirale dans le cas ou les 2 fenêtres sont cachées en partie par une autre fenêtre
et que l'on clique sur l'anneau
A+
Il est fort peu probable que les mêmes causes ne produisent pas les mêmes effets.(Einstein)
Et en logique positive cela donne.
Il est très fortement probable que les mêmes causes produisent les mêmes effets.
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Pour les fous de graphisme...la spirale infernale [Résolu]

Message par Kwai chang caine »

J'avais pas remarqué......
Par contre ce que j'ai remarqué y faut que je regarde, y doit manquer un refresh de l'anneau parce que quand on passe une fenetre dessus soit il est blanc, soit y prend le fond de la fenetre qui lui passe dessus 8O
Mais grace à toi, j'ai deja bien progréssé, j'aurais jamais pensé à faire ce que tu as fais 8)

Comme je l'ai dit, reste encore a l'inserer dans le reste du projet...je serais vraiment sur qu'a ce moment la :wink:
Tu m'as drolement dépanné, je viens de tester un truc qu'etais super chiant, avec ma version
Les msgbox y passaient derriere l'anneau :x
Alors je pouvais pas les lire, et comme l'anneau etait modal, je n'avais pas d'autres choix que de deplacer le msgbox avant de cliquer, pour ne pas repondre "oui" à n'importe quoi :?

Imagine que le msgbox y demande a KCC :
Image
Et que comme une brouette je reponde oui parce que j'ai la flemme de deplacer le msgbox pour lire le texte caché derriere l'anneau :twisted:

Et ben, en cliquant "oui" je signe mon arret de mort 8O

C'est pour ça, j'ai testé ton code, et y me sauve la vie car le message box et ben il est devant 8)
Et KCC il a cliqué NON les copains !!!!
KCC il a cliqué NON
KCC il a cliqué NON

Tanpis pour vous !!!! :D
Tanpis pour FRED aussi, j'suis sur qu'il aurait préféré que je clique oui.....pour etre tranquille, ne serais ce que pour les GIF animés et les retours à la ligne :mrgreen:
Mais je vous aime tous trop ...et aussi mon FRED pour prendre le risque de cliquer "OUI"

Parce que KCC c'est une burne en informatique, il a jamais un programme qui marche...
Mais pour une fois qu'il veut faire une blague ...il est capable d'avoir le seul programme qu'il ne veux pas ....qui marche du premier coup :oops:
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Pour les fous de graphisme...la spirale infernale [Résolu]

Message par Kwai chang caine »

J'savais que j'allais trouver un hic :(

Quand tu recouvre l'anneau par une fenetre et que tu ferme la fenetre...la spirale passe devant l'anneau 8O
J'ai bien cru que je trouverais rien cette fois.

Mais c'est deja beaucoup mieux que ce que j'avais ....
ImageLe bonheur est une route...
Pas une destination

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

Re: Pour les fous de graphisme...la spirale infernale [Résolu]

Message par Backup »

heu ! j'ai pas testé vos trucs la , because je suis pas vraiment a coté de mon ordi preferé
simplement a quelques 22000 kilometres , cependant
j'ai une question

pourquoi ne fait tu pas ton animation comprenant l'anneau et la spirale en gif animé ?

je sais pas pourquoi , mais il me semble me souvenir que certains gadgets sont capables d'afficher du gif animé non ?

ou bien tu transforme ton anime en Mpg , et tu utilise une fenetre avec mini player video
qui tourne la video en boucle , meme que je crois qu'on peux mettre en pause l'animation
;)

enfin je dis ça.... :)
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Pour les fous de graphisme...la spirale infernale [Résolu]

Message par Kwai chang caine »

Remarque le truc de la vidéo c'est pas con...
Le probleme c'est que l'anneau il est découpé comme une fenetre skinée pour ne pas avoir de bords.

Je ne pense pas que je pourrais faire ça avec un webgadget ou un lecteur video, si j'me trompe surtout hesitez pas à me le dire :roll:
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Répondre