Actuellement j'écris un programme en C, sur un système Linux (Raspberry Pi pour être exact) qui devrait dessiner dans une fenêtre GTK en utilisant Cairo. J'ai suivi le tutoriel au: http://zetcode.com/gfx/cairo/. Mais il est trop vague avec ses explications sur certains points.Tracer des lignes avec GTK + et Cairo sans enlever ce qui est déjà dessiné
Il n'explique pas deux points que j'ai vraiment besoin:
- Je ne peux pas trouver un moyen de tirer à la fenêtre avec un appel de fonction appropriée.
- Il supprime ce qui est déjà dessiné.
je besoin d'un morceau de code qui fait des choses simples, d'une manière très orientée objet:
- Dessiner des lignes à une fenêtre GTK avec un appel de fonction, étant donné X et Y pour les départ et point final;
- Ne retirez pas ce qui a été précédemment dessiné;
- Toutes les initialisations de variables et la fenêtre doivent être en dehors de la fonction principale.
Donc, fondamentalement, quelque chose de similaire à ceci:
#include <cairo.h>
#include <gtk/gtk.h>
void drawLine(int xStart, int yStart, int yEnd, int xEnd) {
//Drawing code here.
}
void initializeCairo() {
//Insert cairo initialization.
}
void initializeGTK() {
//Insert GTK initialization.
}
/*If needed a general initializer for both cairo and GTK*/
void initialize() {
//Insert general initialization.
}
int main (int argc, char *archv[]) {
intializeGTK();
initializeCairo();
if(doSomething) {
drawLine(10, 10, 20, 20);
}
}
Si l'on pouvait expliquer ce qu'est une méthode fait (en anglais bon s'il vous plaît, pas une référence à la documentation), ce serait tout à fait génial.
Veuillez également inclure la commande gcc build utilisée.
Merci d'avance!
Le modèle GTK + dessin est « le GtkWidget vous informera quand il a besoin d'être redessinée par l'émission d'un' draw' signal; avant que ce signal est émis, il va effacer le widget pour vous donner une ardoise vierge à dessiner ". Si vous voulez conserver le contenu de la zone de dessin, vous devrez le faire vous-même (peut-être en sauvegardant les paramètres du dessin, dans votre cas une liste de lignes). Vous ne pouvez pas forcer un redraw immédiatement, mais vous pouvez indiquer à GTK + que vous voulez redessiner en utilisant la méthode 'gtk_widget_queue_draw()' et ses variantes; GTK + vous donnera alors le signal 'draw' quand il pourra le faire. – andlabs
Pour ce que ça vaut, ce modèle de dessin n'est pas unique à GTK +; La plupart des toolkits GUI et des API OS fonctionnent comme ça. La documentation GTK + 3 contient plus d'informations sur les dessins personnalisés éparpillés partout si vous souhaitez en savoir plus. Surtout faites attention aux bits sur l'écrêtage; GTK + ne redessine pas * tout * s'il n'a besoin de mettre à jour qu'une partie du widget. – andlabs
Merci pour l'information andlabs, cela éclaircit certaines choses pour moi. – Arastelion