Project - Step 2 : Graphical objects
To translate this course in your native langage:
In Chrome: right-click anywhere on the page and select “Translate to…”
Or use this language selector:
Les mots colorés en anglais représentent des mots-clés de la norme du langage C++. Ils sont conservés à l’identique lors de l’utilisation d’une traduction automatique avec Google Translate. Exemple : l’héritage (inheritance) est un principe fondamental de C++.
L’application va gérer différents objets graphiques :
Des segments
Des triangles
Des cercles
Des rectangles
Du texte
Conception
Avant de mettre en place les outils de tracé, nous allons commencer par créer ces différents objets au sein d’une scène de démonstration. Pour cela, vous pouvez utiliser la fonction initApp() du fichier students.cpp qui est appelée une seule fois au début du programme.
Voici quelques informations pour vous guider dans vos choix de conception :
Le logiciel permettra de créer et de supprimer des objets graphiques.
Il existe un ordre d’affichage :
Les objets sont affichés du fond vers l’avant.
Par convention, les derniers objets créés s’affichent au-dessus des précédents.
Ce système simule une sorte d’empilement.
Le segment n’utilise que la couleur de tracé.
Vous devez donc porter une attention particulière aux points suivants :
Comment stocker ces objets graphiques dans le modèle ?
Quelles fonctions polymorphes peuvent partager ces différents objets graphiques ?
Comment modéliser chaque objet ?
VIDEO (max 1 minute) : Explicitez vos choix de conception
Sélection
Le premier outil que nous allons utiliser est l’outil sélection. Nous allons tout d’abord programmer une version simplifiée :
1 clic souris dans la fenêtre de travail permet de sélectionner 1 objet graphique dans la scène
1 deuxième clic permet d’ajouter un objet à la sélection existante.
L’objet sélectionné doit apparaître différemment : couleur inversée, trait plus épais, encadré en rose, couleur spécifique…
1 clic dans le vide doit tout désélectionner
Plusieurs problèmes apparaissent :
Si deux objets se trouvent sous la position du clic souris, que faire ? En l’absence de précision de la part du client, on choisira l’approche la plus simple
Comment modéliser la sélection des objets dans le modèle ?
Qui est propriétaire des données modélisant la sélection et qui en a la responsabilité : la logique générale ou l’outil de sélection ?
VIDEO (max 1 min) : Explicitez vos choix de conception
Actions
Créez un nouveau panneau contenant des boutons pour effectuer les actions suivantes sur le ou les objets sélectionnés :
Voici les outils :
Delete : supprime le ou les objets sélectionnés
Up/Down : si un seul objet est sélectionné, on l’avance ou on le recule dans l’ordre d’empilement
Top/Bottom : si un seul objet est sélectionné, on le place tout en haut ou tout en bas de l’empilement
Left/Right/Up/Down : déplace le ou les objets sélectionnés de 5 pixels dans la direction choisie
VIDEO (max 1 min) : Faites une démonstration des fonctionnalités
Comment créer des icônes
Des icônes sont disponibles dans le répertoire images pour personnaliser vos boutons.
Vous pouvez également utiliser ChatGPT pour générer d’autres icônes. Pour cela, il faut un compte mais l’abonnement payant n’est pas requis pour la création de quelques images. Voici un exemple de prompt :
ChatGPT : Crée une image représentant :
Résultat obtenu avec ce prompt :