IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

API, COM et SDKs Delphi Discussion :

[Interface] Création d'une interface 2D personnalisée


Sujet :

API, COM et SDKs Delphi

  1. #1
    Membre Expert
    Avatar de prgasp77
    Homme Profil pro
    Ingénieur en systèmes embarqués
    Inscrit en
    Juin 2004
    Messages
    1 306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur en systèmes embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 306
    Par défaut [Interface] Création d'une interface 2D personnalisée
    Bonjour à tous,
    dans le cadre d'un projet étudiant, il m'est demandé de créer l'interface 2D d'un jeu vidéo. J'ai établie une maquette détaillée de ladite interface, il n'y a plus qu'à la coder. Mon soucis est : comment gérer des fenêtres complètement personnaliser ?

    Voici un exemple de mon interface (800Ko): <http://yankee.sierra77.free.fr/files...ce-edition.png>
    Voici l'adresse de mon dossier (9Mo), pages 11-28 : <http://yankee.sierra77.free.fr/files...ort1-final.pdf>

    Je suis sensé gérer plusieurs fenêtres (comme celle intitulée "Canal tout-en-un), déplaceables, redimensionables, pouvant être translucides, contenant ou pas des onglets déplaceables eux-mêmes ...
    (les autres parties sont déjà codées).


    Comment pensez-vous qu'il serait préférable de gérer tout cela ? Avec des TBitmap ? Existe-t-il des outils pouvant m'aider ?
    Toute aide est la bienvenue,
    Merci.

  2. #2
    Membre Expert
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 704
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 704
    Par défaut
    Citation Envoyé par prgasp77 Voir le message
    il m'est demandé de créer l'interface 2D d'un jeu vidéo.
    Le jeu est écrit en quoi ?
    En Delphi aussi ?

    Citation Envoyé par prgasp77 Voir le message
    Comment pensez-vous qu'il serait préférable de gérer tout cela ? Avec des TBitmap ?
    Moi, pour mon jeu en OpenGL, j'ai pris de simples TForm, sans la barre de titre Windows, que j'ai remplacé par des images.
    Et pour le découpage extérieur des fenêtres, j'ai utilisé les régions.

    Si, tu trouves mieux, ça m'intéresse aussi.

    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. :bug: ___ "http://club.developpez.com/regles/#LIII-A"Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.3 Entreprise - Visual studio 2022
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.7)

  3. #3
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 083
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 083
    Par défaut
    Si tu utilise que des TBitmap avec les API Windows, cela sera surement très lent ... tu devrais étudier la mise en thread des calculs, plaçant les images dans une FIFO, et dans le thread principal, dans le OnIdle par Exemple, tu consulte la FIFO pour afficher les images (la mise à l'écran étant très lente)

    Quelle version de Delphi ? Ancienne genre D7, ou D200x pour Win32 ou D200x.NET ?
    Quel OS ? Sous XP, il y a des API intégré pour la transparence, faut juste trouver la documentation, mais l'utilisation sera fastidieuse, sous Vista c'est inclu dans le .NET 3.5 normalement ...

    As-tu des limites pour les API externe ?
    Parce que la solution OpenGl (plus facile que les API windows car orienté graphique et riche en documentation\tutoriel) permettrait de gérer les surfaces (en fait tu empile des couches d'image, ainsi en gérant les couches séparément dans tes objets Delphi, cela facilite la gestion des déplacements et Chevauchement, et aussi le canal Alpha pour la Translucidité !)
    Dans ce cas TOUS les éléments sont dessinés ét gérer manuellement, dans les jeux vidéos c'est souvent fait comment ça, car ainsi Windows n'entre pas dans la gestion des fenêtres ...

    Tu peux aussi prendre l'idée des Régions, c'est à dire que tu crées VRAIEMENT des fenêtres (voir AlphaBlendValue qui ne fonctionne que sous Theme XP actif !), c'est assez simple d'utilisation, ensuite avec SetWindowRgn tu peux faire des trous, mais plus les formes sonts complexes plus cela devient retord ...



    PS : Ah le bon vieil Edwin ! toujours là ! ! Mon avatar à la Taverne du Ninja :
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  4. #4
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    pas d'accord avec toi le troll

    cette interface est des plus simples, visiblement le jeu est en 2D sans effet particulier, il n'est finalement question que de dessiner des bitmaps dans le cadre restreint du terrain de jeu...tout le reste est quasiment statique...ça peut être des TLabel et des TImage pour ce qui peu changer...rien de bien compliqué.

    le plus "compliqué" dans l'histoire c'est le canal tout en un

    s'il peut rester à l'intérieur de la fenêtre j'en ferais un TFrame histoire que le code le concernant se retrouve dans une autre frame, et son déplacement se fait simplement sur OnMouseDown/Move/Up du titre (un TPanel par exemple)...sinon une deuxième fiche StayOnTop par exemple.

    le plus rapide serait d'utiliser un TRichEdit pour l'historique des dialogues vu qu'ils sont colorés
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  5. #5
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 083
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 083
    Par défaut
    Effectivement Paul Toth, je me suis égaré, il y a le "Canal tout en un" en mode discret transparent, et la fenêtre "Canal tout en un" en mode Edition, et effectivement, je pensais que la difficulté étant sur la transparance (très facile avec AlphaBlend à partir de W2K) mais il semble que le problème concerne la version avec onglet et dans ce cas le Frame (non transparent) ou la TForm (avec Parent := MainForm), c'est la solution simple !
    Par contre, je n'ai jamais géré les Ancrages comme dans Delphi ou l'on peut fusionner des fenêtres ...

    J'ai essayé de faire la même chose en Win9x et Delphi 4 et le composant DirectDraw DelphiX (c'est un japonais qui l'avait pondu je crois), lol, pas de AlphaBlend à l'époque, tout à la main, ça ramait largement (la transparence je l'ai calculé moi-même avec ScanLine en faisant un calcul sur chaque canaux sur l'image de fond et l'image de surface)
    Evidemment, gestion de chaque fenêtre à la main, avec la position de la souris, pas de fenêtre windows ...
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  6. #6
    Membre Expert
    Avatar de prgasp77
    Homme Profil pro
    Ingénieur en systèmes embarqués
    Inscrit en
    Juin 2004
    Messages
    1 306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur en systèmes embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 306
    Par défaut
    Bonjour tout le monde,
    je ne m'attendait pas à autant de réponses constructives en si peu de temps, à croire que les forumeurs delphi sont meilleurs que ceux de C/C++ ou des O/S

    Pour répondre aux questions, il s'agit de Delphi 7 sous Windows (doit être portable XP, XP64, Vista, Vista64 et si possible 2000). Nous ne sommes à priori pas limités pour les bibliothèques.
    L'idée que vous proposez si j'ai bien compris (je connais mal les classes delphi) est de créer une TForm par fenêtre de discussion (sans l'affichage de l'en-tête et des bords de l'OS ... je ne me souviens plus de la propriété mais je retrouverai) et de lui affecter un TImage que je régénère à chaque modification ; par dessus le TImage je fous un TRichText. J'affecte un Thread par TForm (+un Thread réseau) et tout ira pour le mieux ?

    Et toute critique sur le choix de l'interface est aussi la bienvenue.

    Je prévois de commencer à coder d'ici quelques jours (il faut que je motive mon binôme qui pense avoir le temps).
    Un grand merci à vous tous !!!

  7. #7
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    Citation Envoyé par prgasp77 Voir le message
    Bonjour tout le monde,
    je ne m'attendait pas à autant de réponses constructives en si peu de temps, à croire que les forumeurs delphi sont meilleurs que ceux de C/C++ ou des O/S
    évidemment

    Citation Envoyé par prgasp77 Voir le message
    Pour répondre aux questions, il s'agit de Delphi 7 sous Windows (doit être portable XP, XP64, Vista, Vista64 et si possible 2000). Nous ne sommes à priori pas limités pour les bibliothèques.
    L'idée que vous proposez si j'ai bien compris (je connais mal les classes delphi) est de créer une TForm par fenêtre de discussion (sans l'affichage de l'en-tête et des bords de l'OS ... je ne me souviens plus de la propriété mais je retrouverai) et de lui affecter un TImage que je régénère à chaque modification ; par dessus le TImage je fous un TRichText. J'affecte un Thread par TForm (+un Thread réseau) et tout ira pour le mieux ?
    ah j'avais pas lu le PDF et pas vu que tu voulais gérer la transparence...tu dois pouvoir jouer sur la transparence intégrée dans Windows je pense, mais je n'ai jamais regardé...sinon un bête traitement d'un bitmap 32bits ça peut le faire...Graphics32 le fait très bien aussi
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

Discussions similaires

  1. [2008R2] Création d'une interface pour intéroger une BD SQL Server
    Par Invité dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 06/06/2014, 18h14
  2. Réponses: 3
    Dernier message: 30/12/2009, 11h24
  3. Réponses: 4
    Dernier message: 15/10/2009, 15h15
  4. création d'une interface graphique personnalisée
    Par ririrourou dans le forum VB.NET
    Réponses: 1
    Dernier message: 11/09/2009, 17h39
  5. [musique] création d'une interface pour se simplifier la vie
    Par Christophe93250 dans le forum Access
    Réponses: 8
    Dernier message: 08/01/2006, 12h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo