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

MFC Discussion :

Copier une bloc mémoire dans un CDC


Sujet :

MFC

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 91
    Points : 64
    Points
    64
    Par défaut Copier une bloc mémoire dans un CDC
    Bonjour,

    Je possède une méthode existante qui recopie un buffer image type RGBA (8,8,8,8) vers un autre buffer. Je souhaiterais utiliser cette méthode pour copier en une seule fois ce buffer image vers un CDC.

    Auriez-vous une solution plus rapide que de copier pixel par pixel ?

    L'ideal pour moi serait de récupérer un pointeur vers la zone image d'un CDC et d'utiliser ma méthode de recopie.

    Est-ce possible ?

    Merci

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 381
    Points : 41 582
    Points
    41 582
    Par défaut
    La manoeuvre classique, c'est:
    1. Avoir le buffer RGBA dans un DIB 32 bits
    2. Avoir le DIB en question dans dans un CMemoryDC
    3. Faire un BitBlt() d'un DC à l'autre.

    Mais il y a peut-être plus simple, plus rapide ou plus propre...

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 91
    Points : 64
    Points
    64
    Par défaut
    Bonsoir,

    Merci pour cette piste, elle semble confirmer ce que je trouve sur internet.

    Creation d'une dib section (CreateDIBSection), puis faire un transfert de ce dib sur le CDC (SetDIBitsToDevice ou SetDIBits).

    Par contre il faut initialiser tout un tas de trucs (BITMAPINFO), je me colle
    donc à cette tache fastidieuse.

    Merci

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 381
    Points : 41 582
    Points
    41 582
    Par défaut
    Pour une DIB 24 ou 32bits, tu n'as à te soucier que de la BITMAPINFOHEADER.
    Et pour le coup de la Bitmap dans une CMemoryDC, je pensais plus à SelectObject()...
    Et ensuite, BitBlt() ou AlphaBlend()...

Discussions similaires

  1. Réponses: 2
    Dernier message: 19/02/2007, 15h46
  2. [TP] Copier une variable string dans le presse-papier
    Par astyan dans le forum Turbo Pascal
    Réponses: 7
    Dernier message: 04/08/2006, 22h47
  3. utilisation d'une zone mémoire dans un formulaire
    Par pursang25 dans le forum Access
    Réponses: 3
    Dernier message: 29/06/2006, 12h41
  4. [VBA-E] copier une fiche active dans un autre classeur.
    Par Little-Freud dans le forum Macros et VBA Excel
    Réponses: 21
    Dernier message: 15/03/2006, 10h51
  5. Copier une image (jpeg) dans le presse papier
    Par benj63 dans le forum C++Builder
    Réponses: 2
    Dernier message: 29/07/2002, 14h51

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