Grid-Maker

Programmation d'applications complexes
Shadow
Messages : 1373
Inscription : mer. 04/nov./2015 17:39

Grid-Maker

Message par Shadow »

Bien le bonjour,

J'me suis dis que avec mon projet, ça me couterais rien de faire ça
puisque c'est dans la continuité de celui-ci.

Voici Grid-Maker.

Si vous avez des questions, idées etc, hésitez pas :)
http://www.aht.li/2887939/Grid-Maker_V1.7z

Commandes:
ActiveGridMakerMenuPopup() ; Active le menu Popup de la grille (Par défaut).
DisableGridMakerMenuPopup() ; Désactive le menu Popup de la grille.
HideGridMaker() ; Cache la grille.
HideGridMakerLines() ; Cache les Lignes.
HideGridMakerPoints() ; Cache les Points.
SetBackImageTransparency(Level.i) ; Change le niveau de Transparence de l'image de fond de la grille.
SetGridMakerAdjust(Flag.i) ; Ajuste la taille de la grille en fonction de ses paramètres (GridMakerSpacePoint).
SetGridMakerBackColor(BackColor.i) ; Change la couleur de l'arrière plan de la grille.
SetGridMakerBackImage(Image.i, Mode.i, Option.i, Transparence.i) ; Change l'image d'arrière plan de la grille avec le mode voulu, 1 = Normal (Le plus rapide), 2 = AutoSize (Le plus lent, Taille de la grille).
SetGridMakerBackImageMode(Mode.i) ; Change le mode d'affichage de l'image d'arrière plan de la grille avec le mode voulu, 1 = Normal (Le plus rapide), 2 = AutoSize (Le plus lent, Taille de la grille).
SetGridMakerBackImageOption(Option.i) ; Change l'option de rendu de l'image d'arrière plan de la grille: 1 = Lissé, plus lent (Redimensionne l'image avec interpolation (Mode par défaut).), 2 = Rapide (Redimensionne l'image sans interpolation (Peut donner des résultats peu satisfaisants).
SetGridMakerHeight(Height.i) ; Change la hauteur de la grille (Par défaut = hauteur de la fenêtre).
SetGridMakerLinesColor(Color.i) ; Change la couleur des lignes de la grille.
SetGridMakerPointsColor(Color.i) ; Change la couleur des points de la grille.
SetGridMakerResizeMode(Mode.i) ; 0 = Pas de redimensionnement, 1 = Redimensionne la grille à droite, 2 = ; Redimensionne la grille en bas, 3 = Redimensionne la grille à droite et en bas.
SetGridMakerSpacePoint(Space.i) ; Change l'espace entre les points de la grille.
SetGridMakerTypePoints(Type.i) ; Change le type de point de la grille, 1 = Points, 2 = Carré, 3 = Croix.
SetGridMakerWidth(Width.i) ; Change la largeur de la grille (Par défaut = largeur de la fenêtre).
SetGridMakerX(X.i) ; Change la position X de la grille (Par défaut = 0, 0).
SetGridMakerY(Y.i) ; Change la position Y de la grille (Par défaut = 0, 0).
ShowGridMaker() ; Affiche la grille.
ShowGridMakerLines() ; Affiche les Lignes.
ShowGridMakerPoints() ; Affiche les Points.
SetGridMakerWindowAdjust(Flag.i) ; Ajuste la taille de la fenêtre en fonction des paramètres du Canvas (GridMakerSpacePoint).
SetGridMakerCursor(Cursor.i) ; Change le curseur lorsque la souris survole le Canvas.
GetGridMakerSpacePoint() ; Retourne l'espace entre les points de la grille.
GetGridMakerY(Y.i) ; Retourne la position Y de la grille.
GetGridMakerX(X.i) ; Retourne la position X de la grille.
GetGridMakerWindowAdjust() ; Retourne si la fenêtre est ajustée en fonction des paramètres de la grille (GridMakerSpacePoint).
GetGridMakerWidth(Width.i) ; Retourne la largeur de la grille.
GetGridMakerVisiblePoints() ; Retourne si les Points de la grille sont visibles.
GetGridMakerVisibleLines() ; Retourne si les Lignes de la grille sont visibles.
GetGridMakerVisible() ; Retourne si la grille est activée ou désactivée.
GetGridMakerTypePoints() ; Retourne le type de point de la grille, 1 = Points, 2 = Croix.
GetGridMakerResizeMode() ; Retourne la façon dont la grille est redimensionnée quand la fenêtre l'est.
GetGridMakerPointsColor() ; Retourne la couleur des points de la grille.
GetGridMakerLinesColor(Color.i) ; Retourne la couleur des lignes de la grille.
GetGridMakerHeight(Height.i) ; Retourne la hauteur de la grille.
GetGridMakerBackImageTransparency() ; Retourne le niveau de Transparence de l'image de fond de la grille.
GetGridMakerBackImageOption() ; Retourne l'option de rendu de l'image d'arrière plan de la grille.
GetGridMakerBackImageMode(Mode.i) ; Retourne le mode d'affichage de l'image d'arrière plan de la grille.
GetGridMakerBackImage() ; Retourne l'image d'arrière plan de la grille.
GetGridMakerBackColor() ; Retourne la couleur de l'arrière plan de la grille.
GetGridMakerAdjust() ; Retourne si la grille est ajustée en fonction de ses paramètres (GridMakerSpacePoint).
GetGridMakerCursor() ; Retourne le curseur personnaliser du Canvas.
InitialiseGridMaker(Window.i, Grid.i, MenuPopup.b, MenuPopupModernLook.b, Border.b, CaptureMouse.b, KeyBoardFocus.b) ; Initialise l'environnement de Grid-Maker sur la fenêtre.
SizeGridMaker() ; Redimensionne automatiquement le Canvas et la fenêtre en fonction des paramètres choisis.
RefreshGridMaker() ; Réactualise la grille en la redessinant entièrement.
Note: Code trop volumineux pour mettre ce message.
Dernière modification par Shadow le mar. 10/mai/2016 16:19, modifié 7 fois.
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Shadow
Messages : 1373
Inscription : mer. 04/nov./2015 17:39

Re: Grid-Maker

Message par Shadow »

Mini mise à jour, petit défaut corrigés.

Edit: Je serais très intéresser de savoir comment vous
vous procèderiez pour faire se genre de programme.

J'ai tendance souvent à me compliqué la vie...
Ont fais avec se qu'on peu.
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Avatar de l’utilisateur
Micoute
Messages : 2522
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Grid-Maker

Message par Micoute »

C'est du bon travail et on peut faire plein de chose avec tellement il y a de paramètres.

Pour répondre à ta question, je ne crois pas que j'aurais eut l'idée de concevoir un tel programme, sinon il aurait quelque peu différent, mais pas forcément plus simple.
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 !
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: Grid-Maker

Message par blendman »

salut
Je serais très intéresser de savoir comment vous
vous procèderiez pour faire se genre de programme.
- Je pense que je serais parti de l'affichage le plus simple possible : le canvas avec la grille.
- puis, j'aurai ajouter des options via une structure (et pourquoi pas un fichier json, car tu n'as pas à te soucier de la sauvegarde, avec un json, ça sauvegarde les paramètres de ta structure)
- puis, j'aurai rendu disponible les options d'affichage dans une fenêtre (et non un menu clic droit) type "Options", onglet affichage ou dans un menu classique. Mais bon, cette gestion là n'est pas le principal.
- par contre, je n'aurai pas fait plein de procédures, mais une ou deux : gestions des options, update de l'affichage (donc du canvas) et c'est tout.
là, tu as beaucoup de procédures et tu aurais sans doute pu tout regrouper en 1 ou 2 (pour la gestion du canvas et des options d'affichage) ;).
Mais après c'est vrai que plus modulable du coup.
Shadow
Messages : 1373
Inscription : mer. 04/nov./2015 17:39

Re: Grid-Maker

Message par Shadow »

Salut blendman

Merci pour ton commentaire :)
J'ai fais se que j'ai pue.

Merci Micoute :)

Note: J'autorise à quiconque de refaire mon logiciel pour voir comment
il ferais lui, le nom du logiciel ne peut être reprit par contre :)
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Grid-Maker

Message par falsam »

■ Le menu PopUp pourrait être plus simple.
- Afficher les points et Masquer les points pourrait se réduire à un seul item : Afficher les points.
- Idem pour Afficher les lignes / Masquer les lignes.
- Idem pour Afficher la grille / Masquer la grille.

Exemple simulant avec un debug l'affichage ou la non affichage des lignes et de la grille.

Code : Tout sélectionner

If OpenWindow(0, 0, 0, 800, 600, "Popup-Menu Example")
  If CreatePopupMenu(0)      
    MenuItem(1, "Afficher les lignes")
    MenuItem(2, "Afficher la grille")
  EndIf
  
  Repeat
    Event = WaitWindowEvent()     ; check for window events
    
    Select Event
      Case #PB_Event_RightClick  
        DisplayPopupMenu(0, WindowID(0))
        
      Case #PB_Event_Menu    
        Select EventMenu() 
          Case 1
            If GetMenuItemState(0, 1) = #False
              SetMenuItemState(0, 1, #True)
              Debug "Menu: Afficher les lignes"
            Else
              SetMenuItemState(0, 1, #False)
              Debug "Menu: Ne plus Afficher les lignes"
            EndIf
            
          Case 2 
            If GetMenuItemState(0, 2) = #False
              SetMenuItemState(0, 2, #True)
              Debug "Menu: Afficher la grille"
            Else
              SetMenuItemState(0, 2, #False)
              Debug "Menu: Ne plus Afficher la grille"
            EndIf
        EndSelect          
    EndSelect
  Until Event = #PB_Event_CloseWindow
EndIf
■ Bug.
- Quand tu cliques plusieurs fois de suite sur Afficher les lignes, le texte augmente de taille. De plus c'est toujours "clic droit" qui apparait dans le debug.

- Idem pour Afficher la grille.
- Idem pour Changer la distance entres les points.
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Shadow
Messages : 1373
Inscription : mer. 04/nov./2015 17:39

Re: Grid-Maker

Message par Shadow »

Mise à jour effectué.
Tous les points cité par Falsam ont été réglé sauf 1.

Correction l'or de la copie de l'image de la grille.
Si la bordure est active, retaille l'image pour enlever les 4 pixel de largeur et hauteur de trop.

Falsam je te remercie, je rencontre un problème que je ne sais pas résoudre encore.
Quand j'affiche la bordure sur le Canvas, ça me met tout en l'air !

L'image sur le Canvas est alors décalé de 4 pixel en bas et à droite et la bordure de droite et en bas cache 2 pixel de l'image à droite et en bas.
J'ai du ruser mais effectivement ça me conviens pas non plus.

Quand tu affiche la grille, alors elle se redessine et redimensionne en fonction des paramètres mais pas que.
(SetGridMakerAdjust(), SetGridMakerWindowAdjust(), SetGridMakerResizeMode())
Le soucis est que aussi quand je redimensionne la fenêtre (ResizeWindow), alors elle refais une nouvelle fois appel
à la procédure "SizeGridMaker()" se qui pose problème donc j'ai mis un Flag.

Bref à cause de s'te bordure, tout est plus compliqué et je ne sais pas comment faire autrement.
J'aurais bien besoin d'aide sur ce coup là.

Si vous avez des idées d'ajout ou autre chose hésitez pas :)
Merci.
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Shadow
Messages : 1373
Inscription : mer. 04/nov./2015 17:39

Re: Grid-Maker

Message par Shadow »

Salut,

Petite mise à jour mineur.
Quelque petites modifications et ajout d'icônes pour le munu Popup.
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Avatar de l’utilisateur
SPH
Messages : 4722
Inscription : mer. 09/nov./2005 9:53

Re: Grid-Maker

Message par SPH »

Shadow a écrit :Salut,

Petite mise à jour mineur.
Quelque petites modifications et ajout d'icônes pour le munu Popup.
Voila pourquoi je te disais de publier rarement mais surement.
La, tu publies maj sur maj mineure et on s'y perd.
Tu devrais assurer en bossant toute une semaine et ne publier qu'apres.
http://HexaScrabble.com/
!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.00 - 64 bits
Shadow
Messages : 1373
Inscription : mer. 04/nov./2015 17:39

Re: Grid-Maker

Message par Shadow »

Ya pas grand chose de plus à ajouté donc voilà pourquoi.
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Shadow
Messages : 1373
Inscription : mer. 04/nov./2015 17:39

Re: Grid-Maker

Message par Shadow »

Mise à jour effectué.

J'avais des soucis avec la bordure du Canvas.
Désormais la bordure est une ImageGadget.

Les problèmes dû à la bordure sont donc fini :)

Maintenant tous fonctionne comme ça devrais mais je ne comprends
pas pourquoi un clique à 0, 0 sur le Canvas ne donne rien :|

C'est pas grave mais ça reste quand même un petit soucis !
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Shadow
Messages : 1373
Inscription : mer. 04/nov./2015 17:39

Re: Grid-Maker

Message par Shadow »

Mise à jour effectué.
Désolé mais j'ai eu d'autres idées d’ajout :)

Ajout de l'option "KeyBoardFocus.b" pour la commande InitialiseGridMaker().
Ceci permet de recevoir les évènements clavier de la grille et de la molette de la souris.

Ajout de la possibilité de changé le curseur de la grille.
Le choix du curseur est ceux du Canvas, je ne sais pas comment mettre un curseur personnalisé (Image).

Voilà, je crois ne rien avoir oublier :)
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Répondre