Postez vos codes disjonctés ici !!! :)

Sujets variés concernant le développement en PureBasic
Mytic
Messages : 466
Inscription : mer. 25/juil./2007 0:13

Postez vos codes disjonctés ici !!! :)

Message par Mytic »

J’ai crée ce post pour poster tous les codes disjonctés. :lol:
En gros des codes qui font peur ou qui rendent l’utilisateur fou !!
Attention ! Ces codes ne doivent en aucun cas être des virus, mes des programmes qui jouent sur le graphique.
(Très utiles en pièces détachées)
En voici un très ( ??????) :D

Code : Tout sélectionner

;-------------
;--By  Mytic
;-------------

InitSprite()
InitKeyboard()
CreateImage(0,640,480)
Procedure capture_ecran()
EcranX = GetSystemMetrics_(#SM_CXSCREEN)
EcranY = GetSystemMetrics_(#SM_CYSCREEN)
Ecran_Largeur=EcranX
Ecran_Hauteur=EcranY
#SRCCOPY = $CC0020
DC = GetDC_(0)
ResizeImage(0,Ecran_Largeur, Ecran_Hauteur)
dessin = StartDrawing(ImageOutput(0))
BitBlt_(dessin, 0, 0, Ecran_Largeur, Ecran_Hauteur, DC, 0, 0, #SRCCOPY)
StopDrawing()
ReleaseDC_(0, DC)
EndProcedure

temps = ElapsedMilliseconds()
capture_ecran()
OpenScreen(ImageWidth(0),ImageHeight(0),32,"test")
x.d = 0
v.d = 0
ClearScreen(0)
StartDrawing(ScreenOutput())
DrawImage(ImageID(0),x,0)
StopDrawing()
FlipBuffers()
Delay(1000)
Repeat
ClearScreen(0)
StartDrawing(ScreenOutput())
x = x - v
v = v + 0.5
If x < ImageWidth(0)*-1
x = 0
EndIf
DrawImage(ImageID(0),x,0)
DrawImage(ImageID(0),x+ImageWidth(0)+1,0)


StopDrawing()
FlipBuffers()
ExamineKeyboard()
Delay(2)
Until KeyboardPushed(#PB_Key_Escape)
CloseScreen()
End

Ne regardez pas le code avant de l’avoir exécuté :D :twisted:
Mytic
Messages : 466
Inscription : mer. 25/juil./2007 0:13

Message par Mytic »

Un autre code sorti il y’a quelques instants de l’asile psychiatrique :lol: :roll:

Code : Tout sélectionner

;-------------
;--By  Mytic
;-------------

InitSprite()
InitKeyboard()
CreateImage(0,640,480)
Procedure capture_ecran()
EcranX = GetSystemMetrics_(#SM_CXSCREEN)
EcranY = GetSystemMetrics_(#SM_CYSCREEN)
Ecran_Largeur=EcranX
Ecran_Hauteur=EcranY
#SRCCOPY = $CC0020
DC = GetDC_(0)
ResizeImage(0,Ecran_Largeur, Ecran_Hauteur)
dessin = StartDrawing(ImageOutput(0))
BitBlt_(dessin, 0, 0, Ecran_Largeur, Ecran_Hauteur, DC, 0, 0, #SRCCOPY)
StopDrawing()
ReleaseDC_(0, DC)
EndProcedure

temps = ElapsedMilliseconds()
capture_ecran()
OpenScreen(ImageWidth(0),ImageHeight(0),32,"test")
x.d = 0
v.d = 0
ClearScreen(0)
StartDrawing(ScreenOutput())
DrawImage(ImageID(0),x,0)
StopDrawing()
FlipBuffers()
Delay(1000)
Repeat

StartDrawing(ScreenOutput())
Circle(Random(ImageWidth(0)),Random(ImageHeight(0)),Random(10),Random(255))
StopDrawing()
FlipBuffers() ; Exprès pour donner l'effet flash
ExamineKeyboard()
Delay(2)
Until KeyboardPushed(#PB_Key_Escape)
CloseScreen()
End

Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

pour ton dernier code, et pour en general tes codes de ce genre

prefere l'utilisation d'un sprite, pour faire tes dessins dedans
plutot que de les faire directement a l'ecran , car sinon on obtiens une petite vibration lorsque c'est dessiné directement
regarde, j'ai modifié ton dernier listing , pour qu'il utilise un sprite, l'image est beaucoup plus nette :D

d'autre part ton topic est un doublon d'un topic existant deja , s'appellant "pixel effect", qui regroupe les prg usant des pixel
voir ici : http://www.purebasic.fr/french/viewtopic.php?t=5685

Code : Tout sélectionner


;-------------
;--By  Mytic
;-------------

InitSprite()
InitKeyboard()
CreateImage(0,640,480)
#fond=1

Procedure capture_ecran()
  EcranX = GetSystemMetrics_(#SM_CXSCREEN)
  EcranY = GetSystemMetrics_(#SM_CYSCREEN)
  Ecran_Largeur=EcranX
  Ecran_Hauteur=EcranY
  #SRCCOPY = $CC0020
  DC = GetDC_(0)
  ResizeImage(0,Ecran_Largeur, Ecran_Hauteur)
  dessin = StartDrawing(ImageOutput(0))
  BitBlt_(dessin, 0, 0, Ecran_Largeur, Ecran_Hauteur, DC, 0, 0, #SRCCOPY)
  StopDrawing()
  ReleaseDC_(0, DC)
EndProcedure

temps = ElapsedMilliseconds()
capture_ecran()
OpenScreen(ImageWidth(0),ImageHeight(0),32,"test")
CreateSprite(#fond,ImageWidth(0),ImageHeight(0))
x.d = 0
v.d = 0
ClearScreen(0)
StartDrawing(SpriteOutput(#fond))
DrawImage(ImageID(0),x,0)
StopDrawing()
FlipBuffers()
Delay(1000)
Repeat
  
  StartDrawing(SpriteOutput(#fond))
  Circle(Random(ImageWidth(0)),Random(ImageHeight(0)),Random(10),Random(255))
  StopDrawing()
  
  DisplaySprite(#fond,0,0)
  FlipBuffers() ; Exprès pour donner l'effet flash
  ExamineKeyboard()
 
Until KeyboardPushed(#PB_Key_Escape)
CloseScreen()
End 
Mytic
Messages : 466
Inscription : mer. 25/juil./2007 0:13

Message par Mytic »

Merci…
Mais le but des deux post est différent ?
L’autre c’est pour des effets avec des pixels
Et celui là, des effets avec le Windows
:?
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

Mytic a écrit :Merci…
Mais le but des deux post est différent ?
L’autre c’est pour des effets avec des pixels
Et celui là, des effets avec le Windows
:?
en utilisant screen ?? 8O
Mytic
Messages : 466
Inscription : mer. 25/juil./2007 0:13

Message par Mytic »

En gros le but c’est de capturer l’écran du Windows, puis de faire n’importe quoi avec ! :)
Avatar de l’utilisateur
venom
Messages : 3137
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Message par venom »

salut voici le mien j'avais fait sa il y a un petit moment pour kcc il me semble :wink: .

Code : Tout sélectionner

Procedure appuie() ; <---- fait un appuie de la touche imprime ecrant ;)
  #Desk = #True
  If #Desk = #True
    keybd_event_(#VK_SNAPSHOT, 0, 0, 0)
  EndIf
EndProcedure

Delay(100)
appuie()
If ExamineDesktops()
  Ecran_Largeur = DesktopWidth(0)
  Ecran_Hauteur = DesktopHeight(0)
  ProfondeurCouleur = DesktopDepth(0)
Else
  End
EndIf
DC = GetDC_(0)
CreateImage(0, Ecran_Largeur, Ecran_Hauteur)
Dessin = StartDrawing(ImageOutput(0))
  BitBlt_(Dessin, 0, 0, Ecran_Largeur, Ecran_Hauteur, DC, 0, 0, #SRCPAINT | $40000000) ; <----on copie l'image qui est dans le dossier temporaire
StopDrawing()
ReleaseDC_(0, DC)
SaveImage(0, "c:/Screenshoot.bmp", #PB_ImagePlugin_BMP) ; <---on la colle ou on veut :)

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

;- Window Constant
Enumeration
  #Window_0
EndEnumeration

If ExamineDesktops()
  L = DesktopWidth(0)
  H = DesktopHeight(0)
EndIf

If OpenWindow(#Window_0, 0, 0, L, H, "desktop tremble", #PB_Window_BorderLess) ; <---et la on crée une fenetre plein ecrant sans bordure puis on n'y colle l'image
  StickyWindow(#Window_0, 1)
  If CreateGadgetList(WindowID(#Window_0))
    If LoadImage(0, "c:/Screenshoot.bmp")
      ImageGadget(0, 0, 0, L, H, ImageID(0))
    EndIf
    
    ; <----la on fait un ResizeWindow pour deplacer la fenetre a l'endroit souhaité
    For R = 0 To 100
      ResizeWindow(#Window_0, Random(8), Random(8), L, H)
      Delay(20)
    Next
    
  EndIf
EndIf
Delay(3000)
End

Repeat
  EventID = WaitWindowEvent()
  If EventID = #PB_Event_Gadget
    Select EventGadget()
        
    EndSelect
  EndIf
Until EventID = #PB_Event_CloseWindow
ps: peut pas mieu faire :cry: :)


@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

Mytic a écrit :En gros le but c’est de capturer l’écran du Windows, puis de faire n’importe quoi avec ! :)
ce n'est pas ce qu'indique l'intitulé du topic , mais bon :)
Mytic
Messages : 466
Inscription : mer. 25/juil./2007 0:13

Message par Mytic »

@Dobro
C’est vrai, le nom est mal choisi ! :wink:

@venom
C’est un wizz géant :lol:

pour la capture utilise cette procedure :

Code : Tout sélectionner


Procedure capture_ecran()
  EcranX = GetSystemMetrics_(#SM_CXSCREEN)
  EcranY = GetSystemMetrics_(#SM_CYSCREEN)
  Ecran_Largeur=EcranX
  Ecran_Hauteur=EcranY
  #SRCCOPY = $CC0020
  DC = GetDC_(0)
  ResizeImage(0,Ecran_Largeur, Ecran_Hauteur)
  dessin = StartDrawing(ImageOutput(0))
  BitBlt_(dessin, 0, 0, Ecran_Largeur, Ecran_Hauteur, DC, 0, 0, #SRCCOPY)
  StopDrawing()
  ReleaseDC_(0, DC)
EndProcedure 
Avatar de l’utilisateur
venom
Messages : 3137
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Message par venom »

@venom
C’est un wizz géant
c'etait le but rechercher sur le moment :wink:

voir ci-dessous :wink:

http://www.purebasic.fr/french/viewtopi ... highlight=



@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Avatar de l’utilisateur
venom
Messages : 3137
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Message par venom »

si non il y a sa que je vien de faire :wink:

Code : Tout sélectionner

Procedure appuie()
  #Desk = #True
  If #Desk = #True
    keybd_event_(#VK_SNAPSHOT, 0, 0, 0)
  EndIf
EndProcedure
Delay(100)
appuie()
If ExamineDesktops()
  Ecran_Largeur = DesktopWidth(0)
  Ecran_Hauteur = DesktopHeight(0)
  ProfondeurCouleur = DesktopDepth(0)
Else
  End
EndIf
DC = GetDC_(0)
CreateImage(0, Ecran_Largeur, Ecran_Hauteur)
Dessin = StartDrawing(ImageOutput(0))
  BitBlt_(Dessin, 0, 0, Ecran_Largeur, Ecran_Hauteur, DC, 0, 0, #SRCPAINT | $40000000) ; <----on copie l'image qui est dans le dossier temporaire
StopDrawing()
ReleaseDC_(0, DC)
SaveImage(0, "c:/Screenshoot.bmp", #PB_ImagePlugin_BMP) ; <---on la colle ou on veut :)

If InitSprite() = 0 Or InitKeyboard() = 0
  MessageRequester("Error", "Can't open DirectX 7 Or later", 0)
  End
EndIf

If InitSprite3D() = 0
  MessageRequester("Error", "Direct3D system can't be initialized correctly", 0)
  End
EndIf

If OpenScreen(800, 600, 16, "Sprite")

  ; Load our 16 bit sprite (which is a 24 bit picture in fact, as BMP doesn't support 16 bit format)
  ; 
  LoadSprite(0, "c:/Screenshoot.bmp", #PB_Sprite_Texture)
  CreateSprite3D(1, 0)

  Sprite3DQuality(1)
  
  TransparentSpriteColor(0, RGB(255, 0, 255)) ; Our pink is transparent :)

  Repeat
    
    ; Inverse the buffers (the back become the front (visible)... And we can do the rendering on the back)
    
    FlipBuffers()
    
    ClearScreen(RGB(0,0,0))
    
    ; Draw our sprite
    ;
    If Start3D()

      ZoomSprite3D(1, x, x)
      RotateSprite3D(1, 1, 1)
      DisplaySprite3D  (1, 0, 10, x)
      
      Stop3D()
    EndIf
    
    ExamineKeyboard()
    
    x+1
  Until x > 1000 Or KeyboardPushed(#PB_Key_Escape)
  
Else
  MessageRequester("Error", "Can't open a 800*600 - 16 bit screen !", 0)
EndIf

End   



@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Mytic
Messages : 466
Inscription : mer. 25/juil./2007 0:13

Message par Mytic »

@Venom
Sympa aussi, le seul problème c’est le degré de transparence, il fallait le faire baisser avec un facteur Transparence = transparence + (transparence / Distance) :wink:
Avatar de l’utilisateur
venom
Messages : 3137
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Message par venom »

bin le probleme c'est que je me sert jamais des sprits donc je me suis servie de l'exemple et j'y et ajouté la fonction screenshoot :wink: .
mais bon :roll: .


@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

Super cool ton effet VENOM :D

Par contre pourquoi ça disparait au bout d'un tour 8O
N'est il pas possible que l'effet soit continu :roll:
Ce qui serait bien aussi, c'est qu'a la fin ça termine en lieu et place de la fenetre de départ :wink:
J'y connais rien, donc, je ne me rend pas compte de ce qui est dur ou simple à réaliser.

En tout cas félicitation, cet effet me plait beaucoup :D
Avatar de l’utilisateur
venom
Messages : 3137
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Message par venom »

voila sans changer de couleur :wink:

Code : Tout sélectionner

Procedure appuie()
  #Desk = #True
  If #Desk = #True
    keybd_event_(#VK_SNAPSHOT, 0, 0, 0)
  EndIf
EndProcedure
Delay(100)
appuie()
If ExamineDesktops()
  Ecran_Largeur = DesktopWidth(0)
  Ecran_Hauteur = DesktopHeight(0)
  ProfondeurCouleur = DesktopDepth(0)
Else
  End
EndIf
DC = GetDC_(0)
CreateImage(0, Ecran_Largeur, Ecran_Hauteur)
Dessin = StartDrawing(ImageOutput(0))
  BitBlt_(Dessin, 0, 0, Ecran_Largeur, Ecran_Hauteur, DC, 0, 0, #SRCPAINT | $40000000) ; <----on copie l'image qui est dans le dossier temporaire
StopDrawing()
ReleaseDC_(0, DC)
SaveImage(0, "c:/Screenshoot.bmp", #PB_ImagePlugin_BMP) ; <---on la colle ou on veut :)

If InitSprite() = 0 Or InitKeyboard() = 0
  MessageRequester("Error", "Can't open DirectX 7 Or later", 0)
  End
EndIf

If InitSprite3D() = 0
  MessageRequester("Error", "Direct3D system can't be initialized correctly", 0)
  End
EndIf

If OpenScreen(Ecran_Largeur, Ecran_Hauteur, ProfondeurCouleur, "Sprite")

  ; Load our 16 bit sprite (which is a 24 bit picture in fact, as BMP doesn't support 16 bit format)
  ;
  LoadSprite(0, "c:/Screenshoot.bmp", #PB_Sprite_Texture)
  CreateSprite3D(1, 0)
  Sprite3DQuality(0)
 
  TransparentSpriteColor(0, RGB(255, 0, 255)) ; Our pink is transparent :)

  Repeat
   
    ; Inverse the buffers (the back become the front (visible)... And we can do the rendering on the back)
   
    FlipBuffers()
   
    ClearScreen(RGB(0,0,0))
   
    ; Draw our sprite
    ;
    If Start3D()

      ZoomSprite3D(1, x, x)
      RotateSprite3D(1, 1, 1)
      DisplaySprite3D  (1, 0, 10, 255)
     
      Stop3D()
    EndIf
   
    ExamineKeyboard()
   
    x+1
  Until x > 1000 Or KeyboardPushed(#PB_Key_Escape)
 
Else
  MessageRequester("Error", "Can't open a 800*600 - 16 bit screen !", 0)
EndIf

End  

@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Répondre