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

 

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    mars 2004
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mars 2004
    Messages : 127
    Points : 99
    Points
    99

    Par défaut Créer image pixel par pixel

    Bonjour à tous,

    Après des années d'utilisation de Visual C++ pour écrire des programmes "console", je souhaite désormais écrire des programmes "windows". En fait, je ne suis pas vraiment certain de ces appellations. Par programme "windows" j'entends programme interactif avec apparition de fenètres, de boutons, d'images, et intervention de la souris, en fonction de l'intervention d'une personne face à l'écran, contrairement aux programmes "console" pour qui la seule interaction possible est l'impression de questions et la saisie de texte en réponse.

    Je souhaite faire apparaître une image sur l'écran, qui serait construite par le programme lui-même. J'ai donc besoin de pouvoir définir moi-même chaque pixel de l'image affichée. J'ai trouvé dans ma boîte à outils un composant appelé pictureBox1. Mais dans les propriétés de ce composant, je ne trouve rien qui me donne accès aux pixels. Le composant en question est-il le bon ? Je n'en trouve pas d'autre.

    Merci de toute aide éventuelle.

  2. #2
    Rédacteur/Modérateur

    Homme Profil pro
    Network game programmer
    Inscrit en
    juin 2010
    Messages
    5 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : juin 2010
    Messages : 5 374
    Points : 23 118
    Points
    23 118

    Par défaut

    Salut,

    il te faut une bibliothèque graphique.
    Plus accès logiciel : Qt, wxWidget, GTK, ...
    Plus accès temps réel/jeu :: SFML, SDL, ... ou carrément OpenGL, DirectX
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    mars 2004
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mars 2004
    Messages : 127
    Points : 99
    Points
    99

    Par défaut

    Merci pour ta réponse rapide.

    Comment faire ?

    Dois-je télécharger Qt (par exemple) et ensuite comment dire à Visual C++ que je veux utiliser Qt ?

    D'ailleurs, je ne connais rien à toutes ces bibliothèques. D'après ton expression "carrément OpenGL, DirectX", j'ai l'impression que ces derniers, c'est mieux ! Comment choisir ? Carrément OpenGL ?

    Merci encore !

  4. #4
    Rédacteur/Modérateur

    Homme Profil pro
    Network game programmer
    Inscrit en
    juin 2010
    Messages
    5 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : juin 2010
    Messages : 5 374
    Points : 23 118
    Points
    23 118

    Par défaut

    Qt est un peu à part, pour l'utiliser mieux vaut utiliser Qt Creator, sinon mettre en place sa chaîne de compilation est un peu chiant.
    Non openGL et DirectX sont les plus bas niveaux possibles, donc c'est rarement la bonne solution..
    Si tu ne sais pas du tout installer une lib, faut commencer par là. Ca dépend un peu de chaque lib, mais rien d'insurmontable avec son moteur de recherche favori.

    C'est un peu vieux mais y'a plein de liens en FAQ ou dans diverses sections du forum.
    https://cpp.developpez.com/faq/cpp/?...e-en-Cplusplus
    https://cpp.developpez.com/bibliotheques/?page=ihm
    https://cpp.developpez.com/telecharg...egorie/455/IHM
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    mars 2004
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mars 2004
    Messages : 127
    Points : 99
    Points
    99

    Par défaut

    Merci beaucoup. Je vais aller voir ça.

  6. #6
    Membre expert
    Inscrit en
    mars 2005
    Messages
    1 318
    Détails du profil
    Informations forums :
    Inscription : mars 2005
    Messages : 1 318
    Points : 3 860
    Points
    3 860

    Par défaut

    La plupart des applications dites « graphiques » qui s'exécutent par l'intermédiaire d'un système d'exploitation moderne peuvent être distinguées en deux grandes catégories :

    • celles qui utilisent - wrappées ou non - les primitives du système d'exploitation à savoir la WINAPI pour Windows, l'API du serveur graphique pour Linux (Xlib pour X, par exemple) pour offrir une interface sophistiquée avec menus, boutons, listes.. qui est compatible/intégrée avec le reste de l'environnement. Un tel programme peut être portable si on utilise une couche d'abstraction, comme Qt par exemple. Les éditeurs de texte, applications de bureautique, navigateurs web, lecteurs multimédia, le démineur de Windows 95.. se situent en général dans cette catégorie.
    • celles qui demandent simplement une fenêtre maître, dessinent tout à l'intérieur - « pixel par pixel » comme tu l'écris - le plus souvent via une API d'accélération matérielle comme OpenGL ou Direct3D, et récupèrent directement les entrées utilisateur (clavier, souris..). On a besoin d'une bibliothèque qui donne accès à l'OS pour créer la fenêtre/contexte et d'une autre pour dessiner à l'intérieur (couple GLFW + OpenGL, par exemple), ou alors d'une couche d'abstraction : SDL, SFML, moteur de jeu.. Les jeux vidéo se situent quasi exclusivement dans cette catégorie.

    Le choix de telle ou telle catégorie dépend de la nature de ton projet.

  7. #7
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    septembre 2005
    Messages
    26 763
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : septembre 2005
    Messages : 26 763
    Points : 39 306
    Points
    39 306

    Par défaut

    Purement sous Windows, sous Visual C++, tu dois avoir la bibliothèque GDI+ (fichier d'en-tête: <gdiplus.h>) qui te permet de créer une image de la résolution de ton choix (classe Bitmap), dessiner dessus (classe Graphics), puis l'afficher dans une fenêtre (classe Graphics aussi) ou la sauvegarder dans le format de ton choix (BMP, PNG et JPEG sont parmi les formats supportés).
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  8. #8
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    février 2005
    Messages
    4 550
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : février 2005
    Messages : 4 550
    Points : 10 431
    Points
    10 431

    Par défaut

    Il existe aussi les MFC qui ont l'avantage d'être facilement intégrées dans VS et qui sont peut-être la source du "pictureBox1" du PO.

    Pour VS2017 :
    https://developercommunity.visualstu...g-in-file.html

    Elles tombent dans la première catégorie de @Matt_Houston.

  9. #9
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    septembre 2005
    Messages
    26 763
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : septembre 2005
    Messages : 26 763
    Points : 39 306
    Points
    39 306

    Par défaut

    Et si le pictureBox1 vient de .Net à la place, il faut savoir que .Net offre également accès à GDI+ (via les classes du namespace System.Drawing).
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Afficher un image dynamiquement pixel par pixel
    Par mchk0123 dans le forum Qt
    Réponses: 14
    Dernier message: 03/04/2007, 23h02
  2. Image a remplir Pixel par Pixel, Quel objet utiliser ?
    Par ZbergK dans le forum GTK+ avec C & C++
    Réponses: 5
    Dernier message: 28/02/2007, 21h35
  3. Lecture de fichiers images pixels par pixels
    Par FabHacker dans le forum Langage
    Réponses: 3
    Dernier message: 26/11/2005, 16h12
  4. Réponses: 1
    Dernier message: 05/10/2005, 14h10
  5. [VB6] [Graphisme] Transfert d'image pixel par pixel
    Par SpaceFrog dans le forum VB 6 et antérieur
    Réponses: 16
    Dernier message: 15/10/2002, 09h53

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