Hello, i m trying to make that : I have an image with many zone, and i want take little zone and position it where i want on my window, so i use this function :
#include <Ecore.h> #include <Ecore_Evas.h> #define LARGEUR_TILE 24 // hauteur et largeur des tiles. #define HAUTEUR_TILE 16 #define NOMBRE_BLOCS_LARGEUR 15 // nombre à afficher en x et y #define NOMBRE_BLOCS_HAUTEUR 13 Evas_Object * tileset (Evas *evas,int moveX,int moveY,int sourceX,int sourceY) { Evas_Object *calque,*clipper; int iw, ih; //on récupére notre image dans l'object calque calque = evas_object_image_add (evas); evas_object_image_file_set (calque, "tileset1.jpg", NULL); evas_object_image_filled_set(calque,1); evas_object_image_size_get(calque, &iw, &ih); evas_object_image_size_set(calque, iw, ih); evas_object_image_fill_set(calque, sourceX, sourceY, iw -sourceX , ih-sourceY); evas_object_resize (calque, iw, ih); evas_object_move (calque, moveX,moveY); evas_object_show(calque); /* //on coupe l'image sur une zone clipper = evas_object_rectangle_add(evas); evas_object_image_size_set(clipper, iw, ih); evas_object_image_fill_set(clipper, 0, 0, iw, ih); evas_object_move(clipper,sourceX, sourceY);//défini le point d'origine de l'extrait de l'image evas_object_resize(clipper, LARGEUR_TILE, HAUTEUR_TILE);// définit la longeur et largeur de la nouvelle image evas_object_clip_set(calque, clipper); */ evas_object_show(clipper); return calque; } int main (int argc, char *argv[]) { Ecore_Evas *ecran;//Déclaration de variable ecran, qui vas contenir nos images et autres ... Evas *evas; //Conteneur d'objet Evas_Object *surface_01; //Surface que l'on vas coloriser if ( !ecore_evas_init()) // Démarrage des EFL. Si erreur alors... { printf( "Erreur d'initialisation des EFL "); // Ecriture de l'erreur exit(EXIT_FAILURE); // On quitte le programme } //NOTRE FENETRE VIDE ecran = ecore_evas_new ("software_x11", 0, 0, LARGEUR_TILE*NOMBRE_BLOCS_LARGEUR, HAUTEUR_TILE*NOMBRE_BLOCS_HAUTEUR, NULL); //On paramétre notre écran if (!ecran) // si probléme sur le driveur pour les EFL { ecore_evas_shutdown (); // Arrêt des EFL return EXIT_FAILURE; // On quitte le programme } ecore_evas_title_set(ecran, "Gestion des évènements en Enlightenment !"); ecore_evas_show (ecran);// On affiche notre écran evas = ecore_evas_get (ecran);// conteneur qui prend notre écran //Notre surface qui vas contenir l'image surface_01 = evas_object_rectangle_add (evas); // création de l'objet rectangle dans l'evas evas_object_color_set (surface_01,255, 255, 255, 255); // couleur du rectangle evas_object_resize(surface_01, LARGEUR_TILE*NOMBRE_BLOCS_LARGEUR, HAUTEUR_TILE*NOMBRE_BLOCS_HAUTEUR); // taille du rectangle // evas_object_show (surface_01); // Mise à jour de l'écran tileset(evas,0,0,24,0); tileset(evas,0,16,24,0); tileset(evas,0,32,24,0); //Fin du programme ecore_main_loop_begin();//notre boocle qui attend l'appuie sur la croix pour terminer le programme ecore_evas_shutdown (); // Arrêt des EFL (libération de la mémoire). return EXIT_SUCCESS; } For the first attempte i have tried the function evas_object_image_fill_set(calque, sourceX, sourceY, iw -sourceX , ih-sourceY); and i don't have the good result, the zone is not selected. the program show the entire image, so can u see the problem please ? ------------------------------------------------------------------------------ Download Intel® Parallel Studio Eval Try the new software tools for yourself. Speed compiling, find bugs proactively, and fine-tune applications for parallel performance. See why Intel Parallel Studio got high marks during beta. http://p.sf.net/sfu/intel-sw-dev _______________________________________________ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel