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.
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 :
- DrawingBuffer() : Renvoie l'adresse de la mémoire vidéo. C'est donc l'adresse du premier pixel à l'écran.
- DrawingBufferPixelFormat() : Renvoie le format du pixel
- DrawingBufferPitch() : Renvoie le nombre d'octets par ligne.
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) |
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) |
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 çaLes 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 © 2024 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.