Bonjour,
je cherche a afficher une image a partir d'un programme en C, avec GTK
Merci pour votre aide
++
Bonjour,
je cherche a afficher une image a partir d'un programme en C, avec GTK
Merci pour votre aide
++
Salut, gtk_image_new_from_file devrait convenir ... sinon plus de détails si cela ne te conviens pas !
Mon Site
Ma bibliothèque de gestion des chaînes de caractères en C
L'imagination est plus importante que le savoir. A. Einstein
Je ne répond à aucune question technique par MP, merci d'avance !
j'ai essayer avec la fonction gtk_image_new_from_file mais rien a faire, ca ne marche pas (il me met une feuille blanche avec une croix rouge a l'intérieur à la place de l'image)
Oui, cela indique qu'il y'a eu une erreur pendant le chargement de l'image ... peut-être est-ce une image avec un format non supporté, enregistre voir ton image en JPG par exemple et tente le coup à nouveau, sinon vérifie bien que le chemin indiqué est correcte !Envoyé par gy0m76
Mon Site
Ma bibliothèque de gestion des chaînes de caractères en C
L'imagination est plus importante que le savoir. A. Einstein
Je ne répond à aucune question technique par MP, merci d'avance !
Tu peux aussi utiliser une autre approche qui te permet de détecter les éventuelles erreurs soit en utilisation d'abord la fonction gdk_pixbuf_new_from_file puis si le chargement a réussi, tu peux ensuite utiliser la fonction gtk_image_new_from_pixbuf
Mon Site
Ma bibliothèque de gestion des chaînes de caractères en C
L'imagination est plus importante que le savoir. A. Einstein
Je ne répond à aucune question technique par MP, merci d'avance !
voici mes 2 lignes de commandes
pPixBufA = gdk_pixbuf_new_from_file("/usr/share/pixmaps/10.png", NULL);
pPixBufB = gdk_pixbuf_new_from_file("/usr/share/pixmaps/11.jpg", NULL);
j'ai essayer en jpg en png, ca ne change rien...![]()
L'avantage de cette fonction est la possibilité d'avoir un message d'erreur clair et en générale, assez précis sur l'erreur rencontrée mais, si tu laisse l'argument sur la valeur NULL, tu ne risques pas de savoir pourquoi il y'a une erreur pendant le chargement ... ce n'est pas pour faire beau ou plus pro que je t'ai proposé cette fonction !Envoyé par gy0m76
Mon Site
Ma bibliothèque de gestion des chaînes de caractères en C
L'imagination est plus importante que le savoir. A. Einstein
Je ne répond à aucune question technique par MP, merci d'avance !
ke veut tu ke je mette a la place??? J'ai essayer avec un 0, mais ca ne donne rien...
Tu as pourtant le prototype sur le lien que je t'ai donné, je vois rien de compliqué:Envoyé par gy0m76
soit un appel avec gestion d'erreur:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 GdkPixbuf* gdk_pixbuf_new_from_file (const char *filename, GError **error);
Là au moins tu sais quelle est la cause de l'erreur !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 #include <glib/gprintf.h> ... GError * error; ... pPixBufA = gdk_pixbuf_new_from_file("/usr/share/pixmaps/10.png", &error); if (pPixBufA == NULL) { g_printf ("%s\n", error->message); g_error_free (error); }
Mon Site
Ma bibliothèque de gestion des chaînes de caractères en C
L'imagination est plus importante que le savoir. A. Einstein
Je ne répond à aucune question technique par MP, merci d'avance !
maintenant ca plante lorsque j'execute mon programme...
j'ai une autre petite question, cmt fait ton pour recupérer une variable saisie dans un GtkEntry. Je saise des chiffres, et je souhaite multiplier cette valeur par un nombre réel.
Voici ce que ca pourrait donner au final avec encore un peu plus de protection:Envoyé par gy0m76
Sinon il n'y a pas de raison que ca plante
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 #include <glib/gprintf.h> ... GError * error = NULL; ... pPixBufA = gdk_pixbuf_new_from_file("/usr/share/pixmaps/10.png", &error); if (pPixBufA == NULL && error != NULL) { g_printf ("%s\n", error->message); g_error_free (error); }![]()
Bin suffit de regarder encore une fois dans la ref de l'API de GTK+ dans la parties des GtkEntry soit la fonction: gtk_entry_get_text. Il te suffit ensuite de convertir ta chaîne avec par exemple la fonction g_strtodEnvoyé par gy0m76
![]()
Mon Site
Ma bibliothèque de gestion des chaînes de caractères en C
L'imagination est plus importante que le savoir. A. Einstein
Je ne répond à aucune question technique par MP, merci d'avance !
pPixBufA = gdk_pixbuf_new_from_file("/usr/share/pixmaps/10.png", &error);
J'ai une erreur sur cette ligne, il me dit que l'assignation n'est pas bonne...???
23 C:\Documents and Settings\Administrateur\Mes documents\Gy0m\main.c [Warning] assignment from incompatible pointer type
Heu j'espère au moins que tu as le bon réflexe de sorte que ton pointeur pPixBufA soit du type GdkPixbuf et non pas un simple GtkWidget !Envoyé par gy0m76
Mon Site
Ma bibliothèque de gestion des chaînes de caractères en C
L'imagination est plus importante que le savoir. A. Einstein
Je ne répond à aucune question technique par MP, merci d'avance !
oui j'ai eu le bon reflexe,
je ne voit vraiment pas d'ou vient l'erreur, a part peut etre dans mon installation, j'ai installer gtk+-dev-2.10.6, gtk-2_10_3-runtime et gtk_dev_2.10.3. Ne me manquerrait t'il pas qqch, ou les ai je mal installer...???
Pour en etre sur, qq pourrai t'il tester ce prgm plz...
#include <stdlib.h>
#include <gtk/gtk.h>
int main(int argc, char **argv)
{
GtkWidget *pWindow;
GtkWidget *pVBox;
GtkWidget *pImage;
GtkWidget *pQuitImage;
GtkWidget *pQuitBtn;
gtk_init(&argc, &argv);
pWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_default_size(GTK_WINDOW(pWindow), 320, 200);
gtk_window_set_title(GTK_WINDOW(pWindow), "GtkImage");
g_signal_connect(G_OBJECT(pWindow), "destroy", G_CALLBACK(gtk_main_quit), NULL);
pVBox = gtk_vbox_new(FALSE, 0);
gtk_container_add(GTK_CONTAINER(pWindow), pVBox);
/* Chargement d'une image a partir d'un fichier */
pImage = gtk_image_new_from_file("./gtk.png");
gtk_box_pack_start(GTK_BOX(pVBox), pImage, FALSE, FALSE, 5);
pQuitBtn = gtk_button_new();
gtk_box_pack_start(GTK_BOX(pVBox), pQuitBtn, TRUE, FALSE, 5);
g_signal_connect(G_OBJECT(pQuitBtn), "clicked", G_CALLBACK(gtk_main_quit), NULL);
/* Chargement d'une image a partir d'un GtkStockItem */
pQuitImage = gtk_image_new_from_stock(GTK_STOCK_QUIT, GTK_ICON_SIZE_LARGE_TOOLBAR);
gtk_container_add(GTK_CONTAINER(pQuitBtn), pQuitImage);
gtk_widget_show_all(pWindow);
gtk_main();
return EXIT_SUCCESS;
}
Aucun problème avec ce code mais le mieux aurait été que tu donnes le code qui te pose problème, peut-être y'a-t-il quelque chose que tu n'as pas vu, vas savoir !
Mon Site
Ma bibliothèque de gestion des chaînes de caractères en C
L'imagination est plus importante que le savoir. A. Einstein
Je ne répond à aucune question technique par MP, merci d'avance !
c'est celui-ci ki me donne pb, normalement il devrait marcher, mais j'ai une croix rouge a la place de l'image...
Et est-ce que tu as essayé avec ce code la manière que je t'ai montré ? Tuas bien mis le fichier PNG dans le même dossier que ton exe ? Une croix rouge indique une erreur de chargement donc au choix, format non supporté ou bien impossible de lire/trouver le fichier !Envoyé par gy0m76
Passe le code sur lequel tu as utilisé les fonctions de GDK et aussi ton image, met tout ca dans un zip puis met-le en pièce jointe à ton prochain post, c'est la meilleure façon de t'aider ! Sinon je ne vois pas et peut rien faire de plus![]()
Mon Site
Ma bibliothèque de gestion des chaînes de caractères en C
L'imagination est plus importante que le savoir. A. Einstein
Je ne répond à aucune question technique par MP, merci d'avance !
merci pour ton aide, je te joint mon code et l'image.
ps: mnt je n'est plus la croix rouge, ya plus rien!!!!
En fait chez moi ca fonctionne, que ce soit sous Linux ou Windows mais ca marche, du moins avec la version 2.8.x de GTK+![]()
![]()
Juste un truc que j'ai oublié de te dire, quand on créé un GdkPixbuf, une fois qu'il n'est plus utilisé il faut détruire l'objet avec la fonction gdk_pixbuf_unref qui comme seul argument le GdkPixbuf![]()
Mon Site
Ma bibliothèque de gestion des chaînes de caractères en C
L'imagination est plus importante que le savoir. A. Einstein
Je ne répond à aucune question technique par MP, merci d'avance !
ok, tu a du ajouter gdk_pixbuf_unref dans ton code pour que ca marche?
Si oui, a kel nivo l'a tu ajouter?
Partager