Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Créer un DC temporaire, dessiner dedans et récuperer les pixels [ Archives / API ] (hilairenicolas)

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é 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 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 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 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...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



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
Temps d'éxécution de la page : 0,250 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.