begin process at 2010 02 10 08:20:32
  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 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 [Fichier Texte] Comment récuperer les informations [ par wallon14 ] Bonjour !Je voudrai savoir comment réaliser un programme qui me permettrai de:- Selectionner le nom d'un fichier- Déterminer le nombre de lignes, de c


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

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,640 sec (4)

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