FAQ PureBasicConsultez toutes les FAQ

Nombre d'auteurs : 7, nombre de questions : 68, dernière mise à jour : 3 janvier 2013  Ajouter une question

 

Bienvenue dans la F.A.Q. PureBasic !

Celle-ci va tenter de répondre aux questions les plus fréquemment posées sur le langage PureBasic et tous ses outils de programmation. Si elle n'a pas pour vocation de répondre à toutes les interrogations possibles, elle reste une bonne base de connaissances sur le PureBasic, et ne demande qu'à être enrichie par vos expériences personnelles.

Bien entendu, malgré toute l'attention qui a pu être portée à cette F.A.Q., des erreurs ont toujours pu s'y glisser. Prenez donc toutes les précautions qui s'imposent avant d'essayer un exemple.

Nous vous souhaitons une bonne lecture ! Et n'oubliez pas qu'en cas de problème, vous pourrez toujours poser votre question sur le forum PureBasic !

L'équipe PureBasic de Developpez.


SommaireGraphiques (2)
précédent sommaire suivant
 

Pour afficher un point il existe la commande Plot(), et la commande Point() pour lire sa valeur.

Ces deux fonctions sont suffisantes pour agir sur des petites surfaces, pour un traitement plus rapide il est nécessaire d'accéder directement à la mémoire vidéo.
Pour cela PureBasic est doté d'une série de commandes :



Finalement pour calculer l'adresse d'un pixel aux coordonnées (x,y) nous utilisons le calcul suivant :

AdressePixel = DrawingBuffer() + ( x * FormatPixel) + DrawingBufferPitch() * y

Avec FormatPixel valant 1, 2, 3 ou 4 selon la réponse de la commande DrawingBufferPixelFormat().

L'exemple qui suit n'est valable qu'en 32 bits. Dans le format 16 bits, il faudrait changer le mode de calcul de la couleur, et utiliser PokeW().

Remplissage en dégradé de l'écran :

Code purebasic : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
 
InitSprite()  
InitKeyboard()  
OpenScreen(800,600,32,"")  
    
Repeat  
  ClearScreen(0)  
  ExamineKeyboard()  
         
  StartDrawing(ScreenOutput())  
        
    *BufferVideo  = DrawingBuffer()            ; Adresse du buffer 
    FormatPixel   = DrawingBufferPixelFormat() ; Format du pixel  
    LongueurLigne = DrawingBufferPitch()       ; Longueur en octets d'une ligne  
    
    Select FormatPixel  
      Case  #PB_PixelFormat_8Bits         : FormatPixel = 1    
      Case  #PB_PixelFormat_15Bits        : FormatPixel = 2    
      Case  #PB_PixelFormat_16Bits        : FormatPixel = 2    
      Case  #PB_PixelFormat_24Bits_RGB    : FormatPixel = 3    
      Case  #PB_PixelFormat_24Bits_BGR    : FormatPixel = 3    
      Case  #PB_PixelFormat_32Bits_RGB    : FormatPixel = 4    
      Case  #PB_PixelFormat_32Bits_BGR    : FormatPixel = 4    
    EndSelect  
     
    ;Mettre en dehors des boucles les constantes et autres calculs  
    #Rouge = 200  
    #Bleu  = 50      
    #Pas = 600.0/255.0  
     
    For y = 0 To 600-1 
      ;Mettre ici ce qui change à chaque ligne 
      *AdresseLigne = *BufferVideo + y * LongueurLigne ; Calcul l'adresse de la ligne y 
      Vert = (y+1)/#Pas  
       
      ;Mettre le strict minimum dans cette boucle 
      For x = 0 To 800-1   
        PokeL( *AdresseLigne, RGB(#Rouge, Vert,#Bleu))  
        *AdresseLigne + FormatPixel ; Adresse du pixel suivant 
      Next   
    Next   
 
  StopDrawing()  
  FlipBuffers()  
Until KeyboardPushed(#PB_Key_Escape)

Mis à jour le 31 mars 2008 Cpl.Bator

Dans le mode plein écran vous devez utiliser un sprite pour afficher la position de la souris obtenue avec MouseX() et MouseY().
Vous pouvez également utiliser directement le curseur Windows, en appelant la fonction ShowCursor_(), dans ce cas Tester les commandes DesktopMouseX() et DesktopMouseY().

Code purebasic : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
 
InitSprite():InitKeyboard() 
OpenScreen(1024,768,32,"") 
SetClassLong_(ScreenID(),#GCL_HCURSOR, LoadCursor_(0, #IDC_ARROW)) 
ShowCursor_(1) 
 
Repeat 
  ClearScreen(0) 
  FlipBuffers() 
  ExamineKeyboard() 
Until KeyboardPushed(#PB_Key_Escape)

Mis à jour le 13 septembre 2010

Proposer une nouvelle réponse sur la FAQ

Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour ça


Réponse à la question

Liens sous la question
précédent sommaire suivant
 

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2018 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

 
Responsable bénévole de la rubrique PureBasic : comtois -