Code :
- FileWriter f=new FileWriter(chemin);
- int taille=largeur*hauteur;
- byte[] b;
- f.write("BM" );
- b=intToDWord(taille*3+54);
- for(int j=0;j<4;j++) {
- f.write(b[j]);
- }
- b=intToDWord(0);
- for(int j=0;j<4;j++) {
- f.write(b[j]);
- }
- b=intToDWord(54);
- for(int j=0;j<4;j++) {
- f.write(b[j]);
- }
- b=intToDWord(40);
- for(int j=0;j<4;j++) {
- f.write(b[j]);
- }
- b=intToDWord(largeur);
- for(int j=0;j<4;j++) {
- f.write(b[j]);
- }
- b=intToDWord(hauteur);
- for(int j=0;j<4;j++) {
- f.write(b[j]);
- }
- b=intToWord(1);
- for(int j=0;j<2;j++) {
- f.write(b[j]);
- }
- b=intToWord(24);
- for(int j=0;j<2;j++) {
- f.write(b[j]);
- }
- b=intToDWord(0);
- for(int j=0;j<4;j++) {
- f.write(b[j]);
- }
- b=intToDWord(0);
- for(int j=0;j<4;j++) {
- f.write(b[j]);
- }
- b=intToDWord(10000);
- for(int j=0;j<4;j++) {
- f.write(b[j]);
- }
- b=intToDWord(10000);
- for(int j=0;j<4;j++) {
- f.write(b[j]);
- }
- b=intToDWord(0);
- for(int j=0;j<4;j++) {
- f.write(b[j]);
- }
- b=intToDWord(0);
- for(int j=0;j<4;j++) {
- f.write(b[j]);
- }
- Color c;
- float zoom=inter.AccesZoneImage().AccesZoom();
- for(int k=hauteur-1;k>=0;k--) {
- for(int j=0;j<largeur;j++) {
- c=texture_actuelle.couleur(j/zoom,k/zoom);
- f.write(c.getBlue());
- f.write(c.getGreen());
- f.write(c.getRed());
- }
- }
- f.close();
|
Voila bon c'est pas très beau mais le but du jeu était que ca devait être fonctionnel rapidement
La méthode couleur(x,y) ca calcule la couleur d'un pixel (ce sont des textures procédurales), et mes getRed, getGreen et getBlue renvoient la bonne valeur, j'ai vérifié.
Le fichier bitmap se crée bien mais c'est au niveau des couleurs que ca fait un peu des trucs bizarres.
Je me disais que ca pouvais être une histoire d'entier signé/non signé mais je vois pas ...
j'oubliais, les méthodes inttoDWord et inttoWord renvoient un tableau de 4 bytes et un tableau de 2 bytes, mais bon je suppose que j'avais pas besoin de le dire
Message édité par LeMakisar le 06-06-2004 à 09:02:35