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

Visual C++ Discussion :

Comment gérer et travailler avec plusieurs images en mémoire.


Sujet :

Visual C++

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 27
    Par défaut Comment gérer et travailler avec plusieurs images en mémoire.
    Salut à vous tous,

    Quelqu'un aurait-il déjà gérer plusieurs fichiers graphiques de taille identique en mémoire et de "travailler" sur ces fichiers "juxstaposés pixel à pixel" de telle sorte qu'ils n'en font qu'un et enfin d'afficher à l'écran une partie du résultat obtenu après y avoir travaillé?

    Le fichier en annexe montre ce que je voudrais pouvoir faire.

    Merci d'avance à ceux qui voudront bien me répondre.
    Images attachées Images attachées  

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 394
    Par défaut
    Sur quoi est basé ton programme pour l'instant ?
    Win32 pur ?
    MFC ?
    .Net ?
    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.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 27
    Par défaut Comment gérer et travailler avec plusieurs images en mémoire.
    Salut Médinoc,

    Merci de ta réponse et tes questions sont pertinantes.

    Actuellement je démarre avec le VC++ 2005 Express parcequ'il est gratuit et pour le moment je n'envisage pas d'acquérir une version complète d'un des "Visual Studio".

    Je suis donc pour le moment dans une phase de recherche de la meilleure solution "Visual" parmi le Basic, le C# ou C/C++ en fonction des possibilités que me donne un de ces trois outils de développement SANS devoir acquérir une version "full" conmpte tenu d'éventuelles librairies ou classes manquantes dans les version "Visual Express".

    J'ai commencé avec le VC++ 2005 Express avec le téléchargement du "Kit" SDK (gratuit aussi). Je ne me suis pas encore rendu compte de ce que m'apportais en plus le kit SDK (des librairies je suppose) mais je ne les ai pas encore utilisées (dumoins je crois...).

    Je ne sais donc te répondre que ce que j'ai déjà pu comprendre pour :
    MFC (Microsoft Fundation Class) éventuellement si "elles" sont incluses dans la version EXPRESS de C++ (ne sont-elles pas limitées ?); quant aux Win32 pur ou .Net je ne saurais te répondre.

    Que me conseilles-tu, ton avis m'intéresse au plus haut point.

    Que je t'explique ce que je "voudrais" arriver à faire.
    L'outil de développement que j'utilise depuis plusieurs années est le WinDev (11 actuellement) trop court à mon avis pour tout ce qui est du domaine du graphique mais parfait pour le domaine des banques de données.

    Comme mon "projet" demandera de grosses banques de données vectorielles (frontières, hydrographie, réseau routier ... et autres données "géographiques" et que je dois développer des modules (Dll) pour palier le manque de possibilités graphiques du WinDev, je me suis tourné vers le VC++ 2005 Express.

    Merci d'avance de ta réponse.

  4. #4
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 394
    Par défaut
    VC++2005 Express ne comprend pas MFC.
    Par contre, tu peux faire de la programmation Win32 native, ou programmer pour le Framework .Net qui dispose d'une puissante API graphique.

    Je te conseillerais .Net, mais je ne pourrais pas trop t'aider dans ce cas-là.
    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.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 27
    Par défaut
    Si la programmation Win32 native ou les API donnent de bons résultats et tout particulièrement la rapidité, cela me conviendrait parfaitement.

    Comment t'y prendrais-tu ?

    Merci de ta réponse.

  6. #6
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 394
    Par défaut
    En natif, j'utiliserais des APIs comme CreateCompatibleDC() pour créer un DC par image (chaque image créée avec CreateDIBSection() ou chargée avec LoadImage())), et lorsqu'il serait temps de dessiner l'image (dans le traitement de l'événement WM_PAINT), je recopierais les portions appropriées avec BitBlt() vers l'écran.

    Une autre solution serait de créer une énorme image en mémoire, à partir des autres, puis faire un seul BitBlt() pour copier vers l'écran au moment voulu.

    Pour le fait que l'image soit plus grande que la zone d'affichage, il suffit de jouer un peu avec les paramètres de BitBlt() pour ne prendre que la zone voulue (et de faire varier ses coordonnées X et Y dans le traitement des messages des scrollbars: WM_VSCROLL et WM_HSCROLL). Aucun appel à ScrollWindow() : Il sera plus simple de redessiner entièrement la fenêtre, puisqu'il suffit de copier une ou plusieurs images.

    Note: Je me doute que ça fait beaucoup à assimiler d'un coup. Ce que je te conseille, c'est de commencer par apprendre comment afficher une image simple sans scrolling (si ce n'est pas déjà fait). Ensuite, une grande image avec scrolling, puis éventuellement une image décomposée...
    Naturellement, il est plus qu'avisé de consulter la doc de ces fonctions et messages sur MSDN.
    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.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 27
    Par défaut Comment gérer et travailler avec plusieurs images en mémoire.
    Salut Médinoc,

    Merci de ta réponse et de tes conseils.

    J'ai recherché avce l'Intelisence et dans l'index de VC++ 2005 Express, les 3 "fonctions" API dont tu parles (CreateCompatible DC(), Create DIB Section() et LoadImage()). J'ai peut être mal cherché mais peux-tu me dire si elle sont en standard dans la version VC++ 2005 Express que j'utilise.

    Je lis souvent que VC++ 2005 Express ne contient pas toutes les librairies.

    Je continue mes recherches et te tiendrai au courant.

    Encore merci de ton aide, elle m'est précieuse.

  8. #8
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 394
    Par défaut
    Ce sont des fonctions de l'API Windows, elles sont donc dans le Platform SDK, qui doit être téléchargé séparément de VS Express. Comme toutes les autres fonctions Win32.

    Et pour l'aide: Ne te fie pas forcément à l'aide locale. Tu peux la consulter directement sur le web:
    http://msdn2.microsoft.com
    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.

Discussions similaires

  1. Comment faire pour travailler avec ce genre d'image
    Par lahcenlahcen dans le forum VB.NET
    Réponses: 4
    Dernier message: 15/05/2012, 15h42
  2. Réponses: 8
    Dernier message: 20/07/2007, 09h09
  3. Réponses: 1
    Dernier message: 06/03/2007, 20h29
  4. Comment comparer un texte avec plusieurs apostrophes
    Par electrosat03 dans le forum Access
    Réponses: 2
    Dernier message: 13/02/2006, 12h46
  5. Réponses: 5
    Dernier message: 29/10/2004, 16h20

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