Minimum pour un écran avec VectorDrawing

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Avatar de l’utilisateur
Micoute
Messages : 2522
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Minimum pour un écran avec VectorDrawing

Message par Micoute »

Bonjour à tous, voulant me faciliter la vie dans le développement, je me suis fait un petit programme qui me sert d'entête et d'en pied graphiques. J'ai rajouté une fonction VectorDrawtext() afin que la syntaxe soit la même que DrawText(), même chose pour VectorBox(). Je peux même, si vous le souhaitez, rajouter VectorLineXY() ou d'autres fonctions de 2DDrawing revisitées pour VectorDrawing.
Je vous l'offre de tout coeur

Code : Tout sélectionner

  InitSprite()
  InitKeyboard()
  InitMouse()
  
  Enumeration
    #Fenetre_principale
    #Canvas_principal
    #Texte
    #Sortie
    #Aucune
  EndEnumeration
  
  Global Police = FontID(LoadFont(#PB_Any, "Arial Rounded MT", 15, #PB_Font_Bold))
  
  Procedure VectorDrawText(X, Y, Texte$, CouleurTexte, Transparence = 255)
    VectorSourceColor(RGBA(Red(CouleurTexte), Green(CouleurTexte), Blue(CouleurTexte), Transparence))
    MovePathCursor(X, Y)
    DrawVectorText(Texte$)
  EndProcedure
  
  Procedure VectorBox(X, Y, Largeur, Hauteur, Couleur, Transparence = 255)
    VectorSourceColor(RGBA(Red(Couleur), Green(Couleur), Blue(Couleur), Transparence))
    AddPathBox(X, Y, Largeur, Hauteur)
    FillPath()
  EndProcedure
  
  If InitSprite() = 0
    MessageRequester("ERREUR","L'initialisation à échoué",#PB_MessageRequester_Error)
  EndIf
  
  ExamineDesktops() : Global  Largeur_Ecran = DesktopWidth(0) , Hauteur_Ecran = DesktopHeight(0) , Profondeur = DesktopDepth(0)
  Global x,y,z,Texte.s, h_Fenetre
  Largeur_Ecran-10 : Hauteur_Ecran-40 
  
  h_Fenetre = OpenWindow(#Fenetre_principale, 0, 0, Largeur_Ecran, Hauteur_Ecran, "Minimum pour un écran avec VectorDrawing", #PB_Window_ScreenCentered)
  OpenWindowedScreen(h_Fenetre, 0, 0, Largeur_Ecran, Hauteur_Ecran, 0, 0, 0, #PB_Screen_SmartSynchronization)
  
  CanvasGadget(#Canvas_principal, 0, 0, Largeur_Ecran, Hauteur_Ecran)
  
  ShowCursor_(#True) ; montrer le curseur
  StartVectorDrawing(CanvasVectorOutput(#Canvas_principal))
  VectorBox(0, 0, Largeur_Ecran, Hauteur_Ecran, #Black) ;pour nettoyer l'écran
  
  VectorFont(Police)
  ;- début d'affichage
  
  ;Taper ici le texte à afficher
  
    Texte = "Pressez une touche ou cliquez pour sortir"
  VectorDrawText(Largeur_Ecran/2-VectorTextWidth(Texte)/2,Hauteur_Ecran-VectorTextHeight(" "), Texte, #White)
  ;- fin d'affichage
  StopVectorDrawing()
  
  ;- boucle d'événements
  Global action.i = #Aucune
  Repeat
    Global Evenement = WindowEvent()
    Select Evenement
      Case #PB_Event_CloseWindow
        action = #Sortie
      Case 0
        ExamineKeyboard()
        If KeyboardPushed(#PB_Key_All)
          action = #Sortie
        EndIf
        ExamineMouse()
        If MouseButton(#PB_MouseButton_Left) <> 0 
          action = #Sortie
        EndIf
        If MouseButton(#PB_MouseButton_Middle) <> 0 
          action = #Sortie
        EndIf
        If MouseButton(#PB_MouseButton_Right) <> 0 
          action = #Sortie
        EndIf
    EndSelect
  Until action = #Sortie

  ;- fermeture de l'écran & de la fenêtre
  CloseScreen()
  CloseWindow(#Fenetre_principale)
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.73 PB 6.00 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !