2010-05-28 4 views
0

Je suis nouveau sur C# et je suis sûr qu'il me manque quelque chose de simple ici. J'essaie de construire un bitmap à partir de valeurs entières (0-255) dans un double tableau, puis de le rendre dans un PictureBox. Je pense que mon bitmap est généré, mais il ne s'affiche pas dans mon PictureBox.Construire et rendre un bitmap à partir d'un double tableau

Bitmap bmp = new Bitmap(image_width, image_height); 

Color pxl_color = new Color(); 

for (int i = 0; i < image_width; i++) 
{ 
    for (int j = 0; j < image_height; j++) 
    { 
     pxl_color = Color.FromArgb(array_bitmap[i][j]); 
     bmp.SetPixel(i, j, pxl_color); 
    } 
} 

PictureBox1.Image = bmp; 

Merci d'avance.

EDIT:

Changement:

pxl_color=Color.FromArgb(array_bitmap[i][j]); 

Pour:

pxl_color=Color.FromArgb(array_bitmap[i][j],array_bitmap[i][j],array_bitmap[i][j]); 

résoud le problème.

Répondre

1

Vérifiez que votre image n'est pas transparente en définissant les valeurs alpha de la couleur sur zéro. L'ordre des octets de la valeur ARGB 32 bits est AARRGGBB. L'octet le plus significatif (MSB), représenté par AA, est la valeur du composant alpha. Assurez-vous que l'alpha est supérieur à zéro dans votre tableau de couleurs.

Essayez également de régler le PictureBox sizeMode sur AutoSize

+0

Votre premier point était ce dont j'avais besoin. Merci beaucoup. – Amichai

0

Ce code a fonctionné pour moi tel quel, sauf que j'ai généré des valeurs aléatoires au lieu d'utiliser array_bitmap. Vérifiez et assurez-vous que votre objet bitmap n'est pas détruit par GC pour une raison quelconque (peut-être le stocker dans une variable d'instance). Il peut également s'agir d'un problème de peinture, dans lequel vous devez actualiser ou repeindre l'image ou le formulaire entier.

Questions connexes