Se connecter / S'enregistrer
Votre question

cairo probléme en c

Tags :
  • Application web
  • Programmation
Dernière réponse : dans Programmation
28 Octobre 2011 19:11:34

bonjours à tous en faite j'ai un problème lors l'utilisation de la fonction dans mon code "gdk_cairo_create(widget->window)" je ne sait pas pourquoi ?en faite il n'arrive pas à le connaitre pour tant déclaré la lib de cairo.h?
est ce que vous avez un idée une vous avez passé par ce probllème?
PS: je code avec langage c et dans l'IDE code block
merci en avance :) )

Autres pages sur : cairo probleme

a c 232 L Programmation
28 Octobre 2011 19:47:25

Salut,

Il me semble que c'est pas dans la librairie cairo mais dans la librairie gdk
a b L Programmation
28 Octobre 2011 19:49:49

Je n'ai pas compris le problème.
Contenus similaires
28 Octobre 2011 22:02:53

CRicky a dit :
Je n'ai pas compris le problème.

alors mon problème c'est que mon compilateur n'arrive pas à comprendre et faire fonctionner la fonction
gdk_cairo_create je ne sais pas pourquoi? est ce qu'il manque un linker ou une declaration dans header, j'ai essayé un simple programme que j'ai trouvé dans un site affin de vérifié si sa marche mais il m'affiche qu'une interface vide ne continent qucun bouton : je vous donne le code exécuté:
  1. #include <cairo.h>
  2. #include <gtk/gtk.h>
  3.  
  4.  
  5. double coordx[100];
  6. double coordy[100];
  7.  
  8. int count = 0;
  9.  
  10. static gboolean
  11. on_expose_event(GtkWidget *widget,
  12. GdkEventExpose *event,
  13. gpointer data)
  14. {
  15. cairo_t *cr;
  16.  
  17. cr = gdk_cairo_create(widget->window);
  18.  
  19. cairo_set_source_rgb(cr, 0, 0, 0);
  20. cairo_set_line_width (cr, 0.5);
  21.  
  22. int i, j;
  23. for ( i = 0; i <= count - 1; i++ ) {
  24. for ( j = 0; j <= count -1; j++ ) {
  25. cairo_move_to(cr, coordx[i], coordy[i]);
  26. cairo_line_to(cr, coordx[j], coordy[j]);
  27. }
  28. }
  29.  
  30. count = 0;
  31. cairo_stroke(cr);
  32. cairo_destroy(cr);
  33.  
  34. return FALSE;
  35. }
  36.  
  37. gboolean clicked(GtkWidget *widget, GdkEventButton *event,
  38. gpointer user_data)
  39. {
  40. if (event->button == 1) {
  41. coordx[count] = event->x;
  42. coordy[count++] = event->y;
  43. }
  44.  
  45. if (event->button == 3) {
  46. gtk_widget_queue_draw(widget);
  47. }
  48.  
  49. return TRUE;
  50. }
  51.  
  52.  
  53. int main (int argc, char *argv[])
  54. {
  55.  
  56. GtkWidget *window;
  57.  
  58. gtk_init(&argc, &argv);
  59.  
  60. window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
  61.  
  62. gtk_widget_add_events (window, GDK_BUTTON_PRESS_MASK);
  63.  
  64. g_signal_connect(window, "expose-event",
  65. G_CALLBACK(on_expose_event), NULL);
  66. g_signal_connect(window, "destroy",
  67. G_CALLBACK(gtk_main_quit), NULL);
  68. g_signal_connect(window, "button-press-event",
  69. G_CALLBACK(clicked), NULL);
  70.  
  71. gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
  72. gtk_window_set_title(GTK_WINDOW(window), "lines");
  73. gtk_window_set_default_size(GTK_WINDOW(window), 400, 300);
  74. gtk_widget_set_app_paintable(window, TRUE);
  75.  
  76. gtk_widget_show_all(window);
  77.  
  78. gtk_main();
  79.  
  80. return 0;
  81. }

a b L Programmation
29 Octobre 2011 11:30:45

Si c'est une erreur de linker, c'est qu'il te manque le lien avec la bibliothèque.

En C, une bibliothèque est composé de 2 parties:
- le fichier .h qui ne contient que les déclarations des fonctions et autres
- le fichier .a ou .lib qui contient le code compilé de ces mêmes fonctions

Tu as donc 3 choses à configurer:
1. le répertoire d'inclusion (include) qui doit pointer sur le répertoire contenant le répertoire gtk contenant lui-même tous les .h
2. le répertoire de bibliothèque (library) qui doit pointer sur le répertoire contenant directement la bibliothèque .a ou .lib
3. indiquer au compilateur le nom du fichier de bibliothèque que tu veux utiliser dans la liste des bibliothèques.
29 Octobre 2011 14:59:17

oui mais en faite j'ai arrivé à enlever le bug dans mon code mais maintenant mon programme m'affiche une interface qui ne contient pas aucun zone de travail ni bouton ??!!! c'est pas normale car j'ai utiliser mon cairo affin de faire une zone de dessin mais j'ai rien trouvé comme résultat ?!!! avez vous s'il vous plais une idéee ?!!
En tenant compte que j'ai exécuté le programme que je l'ai écrit dans le forum, il est tous juste !!
mais dans l'exécution j'arrive pas à faire apparaitre la zone de dessin !!
vous me compreniez ?!!
a b L Programmation
29 Octobre 2011 19:01:00

Dans ton code, il me semble que tu ne crées qu'une seule fenêtre (de taille 400x300) à laquelle tu associes 3 évènements. Je ne vois aucun bouton.
29 Octobre 2011 19:02:50

j'ai résolu mon problème merci en tous cas.
Mais maintenant c'est le temps de faire mon espace de jeux d'une tetris :??:  je dois comprendre comment je fais ma grille et remplir les carreau par une pièce
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS