begin process at 2012 02 10 20:08:42
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

API

 > 

Créer un DC temporaire, dessiner dedans et récuperer les pixels


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Créer un DC temporaire, dessiner dedans et récuperer les pixels

mardi 20 décembre 2005 à 18:39:04 | Créer un DC temporaire, dessiner dedans et récuperer les pixels

hilairenicolas

Bonjour à tous,

je voudrais arriver à dessiner (opérations basiques du GDI) dans un DC temporaire, qui n'a pas pour vocation d'etre affiché.
Ce DC devra pouvoir etre très gros (plus grand que la résolution de l'écran, pour que ca ressemble un peu à un DC d'imprimante)
Après le dessin, j'aimerai récuperer un tableau de pixel, afin de l'analyser.

Voilà ce que j'ai essayé (en vain) :
--> Créer un DC (le problème c'est qu'on doit passer "DISPLAY" ou "WINSPOOL" à CreateDC et que j'ai rien réussi à faire avec CreateCompatibleDC)
--> Créer un bitmap compatible (mais ici, la largeur et la hauteur doivent etre supérieur à la résolution de l'écran, donc pas de CreateCompatibleDC(CreateDC("DISPLAY", ...)) )
--> Faire mes dessins (fillrect, lineTo, ...)
--> Tenter de récuperer les pixels avec GetDIBits (et plus précisement, la fonction GetBmpData de YMCA), mais j'obtiens toujours du noir (tableau rempli avec des 0)

Comment faire ?

Merci de votre aide

Nico
mardi 20 décembre 2005 à 19:00:24 | Re : Créer un DC temporaire, dessiner dedans et récuperer les pixels

vecchio56

Administrateur CodeS-SourceS
HDC hScreen = GetDC(0); HDC hdc = CreateCompatibleDC(hScreen); HBITMAP hbmp = CreateCompatibleBitmap(hScreen, x, y); ReleaseDC(0, hScreen); SelectObject(hdc, hbmp); // Utilisation de hdc comme un DC normal DeleteDC(hdc); DeleteObject(hbmp);
mercredi 21 décembre 2005 à 10:51:49 | Re : Créer un DC temporaire, dessiner dedans et récuperer les pixels

hilairenicolas

on m'a conseillé d'utiliser CreateDIBSection

voila ce que je fais :

                BITMAPINFO bmInfo;
                memset(&bmInfo.bmiHeader, 0, sizeof(BITMAPINFOHEADER));
                bmInfo.bmiHeader.biSize         = sizeof(BITMAPINFOHEADER);
                bmInfo.bmiHeader.biWidth        = 6714; // big size
                bmInfo.bmiHeader.biHeight       = 4662;
                bmInfo.bmiHeader.biPlanes       = 1;
                bmInfo.bmiHeader.biBitCount     = 24;

                LPVOID pBit32;
                HBITMAP hBmp = CreateDIBSection(0, &bmInfo, DIB_RGB_COLORS, &pBit32, NULL, 0);
                HDC sdc = GetDC(NULL);
                HDC memDc = CreateCompatibleDC(sdc);
                HBITMAP holdobj = (HBITMAP) SelectObject(memDc, hBmp);

                HBRUSH hBrush = CreateSolidBrush (RGB(255,0,0));
                RECT rect = {2,0,20,200};
                FillRect (memDc, &rect, hBrush) ;
                DeleteObject (hBrush) ;

                SelectObject(memDc, holdobj);
                DeleteDC(hdc);
                ReleaseDC(NULL, sdc);



mais bon, j'ai l'impression que pBit32 contient que des 0, alors qu'il devrait plutot y avoir du rouge ....

Qu'est-ce qui n'est pas bon ?

Merci de ton aide
mercredi 21 décembre 2005 à 16:09:12 | Re : Créer un DC temporaire, dessiner dedans et récuperer les pixels

hilairenicolas

Bon, j'ai fait autrement

vive les DC


Cette discussion est classée dans : créer, récuperer, dc, dessiner, temporaire


Répondre à ce message

Sujets en rapport avec ce message

DC ou fenetre ? [ par AlexMAN ] Bonsoir, Voila, je voux explik mon pb : je veux dessiner, 'sur' les controles d'une fenetre, un rectangle, mais j'ai un ptit souci sur comment dessine comment créer une GPO avec l'interface IGroupPolicyObject [ par ranouna ] bonjour tout le mondeje code en C++, je voudrais créer une GPO avec IGroupPolicyObjectmon code est le suivant : CoInitialize(NULL); IGroupPolicyObject Choisir le DC d'une fenêtre [ par vecchio56 ] Salut, Je voulais savoir si'il est possible de dessiner une fenêtre dans un device contexte spécifique? Par exemple, dessiner tous les fenêtre filles dessiner dans une boite de dialog [ par olfa7183 ] salut,je veux creer un compteur qui compte les monnaie inserees.tout d'abord je veux le dessiner puis le programmer.pour le dessin j'ai utilisé le cod Dessiner sur tout l'ecran [ par memiks ] Voila, je voudrais pouvoir déssiner sur tout l'écran comme si je prenais des notes avec un feutre sur mon écran.J'ai penser à creer une fenetre transp carte google [ par ja92 ] Bonjour , Alors voilà , j'aimerais récuperer une carte google en format png mais sur google apis il me demande un site pour récuperer la clé google p Créer un DC privé [ par GEDEON ] bonjour...    J'utilise les objets GDI dans un CView et j'aimerais utiliser un DC privé.... D'après MSDN, je dois changer la variable membre "style" d Dessiner un joli cadre en C :-) [ par did2604 ] Bonsoir,Petite question toute bête... je m'amuse à créer des cadres de présentation qui commence du style :___________________________________________ créer un contrôle perso dans un dialog [ par sibi12 ] Bonjour,Je suis en train de créer une boite de dialogue où j'aimerais "encapsuler" des controle sous formes de classe pour pouvoir les utiliser dans p prob:Récuperer des fichiers! [ par frdestroyers27 ] Bonjours a tous!mon probleme est le suivant.si j'ai un repertoire data dedans il y a des fichier .dat .bmp .wav je voudrait recupérer les nom de tout


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,265 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales