MaxSoldier
Messages postés289Date d'inscriptiondimanche 10 août 2003StatutMembreDernière intervention28 février 2009
-
4 déc. 2007 à 11:21
MaxSoldier
Messages postés289Date d'inscriptiondimanche 10 août 2003StatutMembreDernière intervention28 février 2009
-
5 déc. 2007 à 18:14
Salut à tous ! N'ayant pas pus résoudre mon prblème seul, je m'en réfère à vous !
Je m'explique, je cherche à écrire un fichier BMP à l'ancienne, c'est à dire sans aucune librairie.
Je suis presque au bout de mon programme mais lorsque je lui demande de dessiner un pixel, il dessine tout les ligne horizontale. A quoi est-ce du ?
Pistol_Pete
Messages postés1054Date d'inscriptionsamedi 2 octobre 2004StatutMembreDernière intervention 9 juillet 20137 4 déc. 2007 à 11:49
Salut
Dans ta fonction GetColor, tu retourne une variable local, tu ne peux donc pas etre sur que ta variable en sorti de fonction est correcte.
Je ne sais pas si ton problème vient de là, mais c'est important à corriger.
Pistol_Pete
Messages postés1054Date d'inscriptionsamedi 2 octobre 2004StatutMembreDernière intervention 9 juillet 20137 4 déc. 2007 à 13:16
Re
Ya quand meme pas mal de chose à revoir:
L'allocation dynamique de TmpPic.ImgArray n'est pas correct : Tu alloues
(sizeof(Color)*iWidth) + (sizeof(Color)*iHeight) pour une image 600 par 800 ca fait un tableau de 1400 places alors qu'il y a 480 000 pixels !!!
L'accès à ton tableau est aussi incorrecte Pic.ImgArray[X,Y] jamais vu cette syntaxe, j'arrive meme pas à comprendre pourquoi ca compile sans erreur.
Pour accéder au pixel X,Y, il faut un truc du genre: [X+Y*Width]
Je pense que faire une classe serait plus simple ici.
cs_juju12
Messages postés966Date d'inscriptionsamedi 3 avril 2004StatutMembreDernière intervention 4 mars 20104 4 déc. 2007 à 17:44
Pas regardé en détail mais il me semble que vous oubliez un truc : dans le codage bitmap chaque rangée doit être un multiple de 4 octets, peu importe la résolution en couleur. Dans le cas du test (800*600) c'est OK puisque 800 divisible par 4, par contre pour une image quelconque (essayez 799*600 par exemple ca devrait pas marcher) faut compléter chaque ligne avec des zéros.
Vous n’avez pas trouvé la réponse que vous recherchez ?
MaxSoldier
Messages postés289Date d'inscriptiondimanche 10 août 2003StatutMembreDernière intervention28 février 20092 5 déc. 2007 à 18:14
Salut à tous ! Tout d'abord, merci pour toutes ces réponses ! Je vais essayer de vous répondre un par un en expliquant le pourquoi du comment :-p
Pistol_Pete : Je débute en programmation C++, je viens du C# d'ou une structure de code peut être un peu étrange, j'ai appris sur le tas, au fil des erreur de compilation... Je vais essayé de corriger ça
Juju : Je sais mais ce programme étant quasiment un programme de test, j'ai essayé de pas trop me compliqué la vie pour les 0 à la fin d'une ligne non divisible par 4. Quant au 4 composante, j'ai lu partout qu'il n'en fallait que 3, dans l'ordre, bleu vert rouge ( Little-endien)
Merci à tous, je vais pouvoir avancer grâce à vous !
-=Ar$£nik=-