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

C++/CLI Discussion :

Comment afficher dans un picturebox une image contenue dans un tableau


Sujet :

C++/CLI

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 46
    Points : 31
    Points
    31
    Par défaut Comment afficher dans un picturebox une image contenue dans un tableau
    Bonjour Tout le monde,

    Je viens demander à l'aide, au secours, je n'y comprend plus rien, j'ai un tableau de uchar qui contient des valeurs en niveaux de gris d'une image, je voudrai la mettre dans un picturebox alors j'ai bien essayé des solution mais en vain, auriez vous des idées ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
     
    b_aff_lbl = (UCHAR*) malloc (6982*5677 + 1);
    	MbufGet2d(test,0,0,6982,5677,b_aff_lbl);
     
    	HBITMAP hBmp;
    	hBmp = NULL;
    	// 
    	DWORD taille;
    	HDC hDC;
    	hDC = CreateCompatibleDC(NULL);
     
    	BITMAPINFO *bi;
     
    	bi = (BITMAPINFO*)malloc(sizeof(BITMAPINFOHEADER) + sizeof (RGBQUAD)*256 ); 
    	ZeroMemory(bi,sizeof(BITMAPINFOHEADER) + sizeof (RGBQUAD)*256);
    	//&bi->bmiColors = (RGBQUAD*)malloc(sizeof (RGBQUAD)*256 );
     
    	bi->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);// + sizeof (RGBQUAD)*256;
    	bi->bmiHeader.biWidth = 6982;
    	bi->bmiHeader.biHeight = 5677;
    	bi->bmiHeader.biBitCount = 8; 
    	bi->bmiHeader.biPlanes = 1;
    	bi->bmiHeader.biCompression = BI_RGB;
    	bi->bmiHeader.biSizeImage = 6982*5677*1;
    	bi->bmiHeader.biClrImportant = 256L;
    	bi->bmiHeader.biClrUsed = 256L;
     
    	for (int i = 0 ; i < 256 ; i++ ) 
    	{
    	bi->bmiColors[i].rgbBlue = (unsigned char) i;
    	bi->bmiColors[i].rgbGreen = (unsigned char) i;
    	bi->bmiColors[i].rgbRed = (unsigned char) i;
    	bi->bmiColors[i].rgbReserved = 0;
    	}
     
    	int		nColor = 236;
    	LOGPALETTE	*hlogPal;
     
    	hlogPal = (LOGPALETTE*)malloc(sizeof(LOGPALETTE) + nColor*sizeof(PALETTEENTRY));
    	hlogPal->palVersion = 0x300;
    	hlogPal->palNumEntries = nColor;
     
    	for (int i = 0 ; i < nColor ; i++ ) 
    	{
    			hlogPal->palPalEntry[i].peRed = i;
    			hlogPal->palPalEntry[i].peGreen = i;
    			hlogPal->palPalEntry[i].peBlue = i;
    	}
    	HPALETTE hpal = CreatePalette(hlogPal);
     
    	SelectPalette(hDC, hpal, TRUE);
     
     
    	hBmp = CreateCompatibleBitmap (hDC, 6982, 5677);
     
    	SetDIBits(hDC, hBmp, 0, bi->bmiHeader.biHeight, b_aff_lbl, bi, DIB_RGB_COLORS);
     
    	pictureBox1->Image =  Image::FromHbitmap(IntPtr((int)hBmp));

    Et l'image chargée demeure toujours noir

    Merci d'avance

  2. #2
    Expert confirmé
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Points : 4 388
    Points
    4 388
    Par défaut
    Tu peux passer par la classe Bitmap :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
      private Bitmap CopyDataToBitmap(int w, int h, byte[] data, PixelFormat f)
            {
                Bitmap bmp = new Bitmap(w, h, f);
     
                BitmapData bmpData = bmp.LockBits(
                                     new Rectangle(0, 0, bmp.Width, bmp.Height),
                                     ImageLockMode.WriteOnly, f);
                Marshal.Copy(data, 0, bmpData.Scan0, data.Length);
                bmp.UnlockBits(bmpData);
     
                return bmp;
            }
    Il te suffit de mettre le bon PixelFormat
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

Discussions similaires

  1. Comment changer la position d'une image contenue dans un bouton?
    Par KTARIK dans le forum Composants graphiques
    Réponses: 2
    Dernier message: 23/07/2013, 09h15
  2. [Débutant] sauvegarder dans un dossier une image contenue dans un picturebox
    Par veens777 dans le forum VB.NET
    Réponses: 2
    Dernier message: 29/09/2012, 18h34
  3. Réponses: 5
    Dernier message: 30/10/2008, 10h06
  4. [MySQL] afficher une image contenue dans un blob avec d'autres infos
    Par pakkun dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 28/06/2007, 17h08
  5. [Zip] Afficher une image contenue dans un fichier zip
    Par Mister Nono dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 19/03/2007, 08h59

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