Ex d'utilisation LoadBmp(Bitmap1,"coucou.bmp")
le pb vient de ce que j'ai mis entre /* */
J'aimerai, (suivant la résolution comme tu peux le voir) que si on est en 800*600, le fichier ouvert soir Ecoucou.bmp ou sinon Scoucou.bmp. Mais je n'arrive pas à le faire! qqn peut me renseigner sur l'utilisation des pointeurs dans ce cas? (la fonction feVFile_Op..... attends un pointeur en 3ème paramètre)
trinitacs
Messages postés249Date d'inscriptionmardi 16 juillet 2002StatutMembreDernière intervention 7 août 20032 19 janv. 2003 à 00:04
-------------------------------
Réponse au message :
Le problème vient de l'utilisation de l'opérateur binaire &&. C'est le Et. Je pense que tu voulais rajouter "E" ou "S" devant le fichier. On ne procède pas de cette manière car l'opérateur && est utilisée pour les conditions multiples. Pour rajouter qqch à une chaîne tu dois utiliser la fonction
str3 = strcat( str1, str2 );
où str2 sera rajoutée à str1 et le résultat sera stocké dans str3. Sache que str1 est inchangé. La fonction strcat est dans le fichier string.h et tu pourras y trouver ces semblabe comme strcpy etc ...
Si je peux te donner une conseil. A t'a place je n'utiliserai pas 2 images pour 2 résolutions possible. Mais je créerais plutot une fonction qui ferait une homotétie de l'image. Ça te permetttera de rendre ton prog plus extensible et facil à entretenir.
-------------------------------
> Voici une de mes fonctions:
>
> void Main::LoadBmp(geBitmap *Bmp, char *NomFichier)
> {
> geVFile *File;
> int temp;
> /*
> if (m_Height==800)
> *NomFichier ="E" && *NomFichier;
> else
> *NomFichier="S" && *NomFichier;
> */
> File = geVFile_OpenNewSystem(NULL, GE_VFILE_TYPE_DOS, NomFichier, NULL, GE_VFILE_OPEN_READONLY);
>
> }
>
> Ex d'utilisation LoadBmp(Bitmap1,"coucou.bmp")
> le pb vient de ce que j'ai mis entre /* */
> J'aimerai, (suivant la résolution comme tu peux le voir) que si on est en 800*600, le fichier ouvert soir Ecoucou.bmp ou sinon Scoucou.bmp. Mais je n'arrive pas à le faire! qqn peut me renseigner sur l'utilisation des pointeurs dans ce cas? (la fonction feVFile_Op..... attends un pointeur en 3ème paramètre)
>
> Merci par avance! :)
trinitacs
Messages postés249Date d'inscriptionmardi 16 juillet 2002StatutMembreDernière intervention 7 août 20032 19 janv. 2003 à 12:39
-------------------------------
Réponse au message :
Je répond au mail que tu m'a envoyé sur le forum pour que ça serve à d'autres par hasard.
Une homotétie c'est un agrandissement ou l'inverse. Un peu comme un zoom.
On va partir du principe que tu as une structure ou une classe bitmap. Celle ci stocke l'image sous forme d'un tableau. Un tableau de char si il y a 256 couleur oude int en 24 bit (rbg) et il reste un octect pour l'alpha. Bon bref on a un tableau.
Si tu veux l'agrandir de 2 tu va devoir créer une deuxième variable bitmap mais avec un tableau deux fois plus grand. Donc tu recopiera chaque pixel (chaque élément du tableau) deux fois dans le nouveau bitmap.
Si tu veux le réduire tu fais la même chose en sens inverse. Tu recopieras un pixel sur deux.
Ici j'ai pris des cas simples ( * 2 ou / 2 ) mais tu peus aussi le faire avec un facteur de 1.12345 si tu le veux.
Donc en gros tu fais un sorte de règle de 3 pour savoir quel pixel tu va recopier sur le bitmap de destination.
J'espère avoir été clair, et si tu veux des précision ou un exemple de code source demande le moi ;)
-------------------------------
> exact
> de plus, les * devant NomFichier sont suspectes
> voici un exemple simple de concaténation :
>
> #include
> using namespace std;
>
> int main()
> {
> char nomFichier[]="test.txt";
> char resultat[25]="E";//init
> strcat(resultat, nomFichier);//concat
> cout << resultat << endl;//affiche "Etest.txt"
> return 0;
> }
>
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> >
> >
> >
> >
> > -------------------------------
> > Réponse au message :
> > Le problème vient de l'utilisation de l'opérateur binaire &&. C'est le Et. Je pense que tu voulais rajouter "E" ou "S" devant le fichier. On ne procède pas de cette manière car l'opérateur && est utilisée pour les conditions multiples. Pour rajouter qqch à une chaîne tu dois utiliser la fonction
> > str3 = strcat( str1, str2 );
> > où str2 sera rajoutée à str1 et le résultat sera stocké dans str3. Sache que str1 est inchangé. La fonction strcat est dans le fichier string.h et tu pourras y trouver ces semblabe comme strcpy etc ...
> >
> > Si je peux te donner une conseil. A t'a place je n'utiliserai pas 2 images pour 2 résolutions possible. Mais je créerais plutot une fonction qui ferait une homotétie de l'image. Ça te permetttera de rendre ton prog plus extensible et facil à entretenir.
> > -------------------------------
> >
> > > Voici une de mes fonctions:
> > >
> > > void Main::LoadBmp(geBitmap *Bmp, char *NomFichier)
> > > {
> > > geVFile *File;
> > > int temp;
> > > /*
> > > if (m_Height==800)
> > > *NomFichier ="E" && *NomFichier;
> > > else
> > > *NomFichier="S" && *NomFichier;
> > > */
> > > File = geVFile_OpenNewSystem(NULL, GE_VFILE_TYPE_DOS, NomFichier, NULL, GE_VFILE_OPEN_READONLY);
> > >
> > > }
> > >
> > > Ex d'utilisation LoadBmp(Bitmap1,"coucou.bmp")
> > > le pb vient de ce que j'ai mis entre /* */
> > > J'aimerai, (suivant la résolution comme tu peux le voir) que si on est en 800*600, le fichier ouvert soir Ecoucou.bmp ou sinon Scoucou.bmp. Mais je n'arrive pas à le faire! qqn peut me renseigner sur l'utilisation des pointeurs dans ce cas? (la fonction feVFile_Op..... attends un pointeur en 3ème paramètre)
> > >
> > > Merci par avance! :)
> >
>