XWindow ==> afficher un int [C/Unix] - C - Programmation
Marsh Posté le 20-01-2004 à 19:20:03
comment ça?
dans la console ou dans une fenêtre X?
donne plus de précisions...
Marsh Posté le 20-01-2004 à 19:25:47
bonjour!
alors je voudrais une fonction du genre: XDrawInt ou XDrawDouble pk pas :-p!
pr l'instant j'ai fais une fonction qui me transforme l'int en chaine et j'affiche la chaine...:-/
puis sinon, vous savez pas pk mon expose ne veut pas fonctionner qd je fais ca:
while (1)
{
...
if (expose)
{
While (str = getnextline(fd))
XDrawLine(....);
}
}
qd je mets pas la boucle c niquel...
merci pr tout
Marsh Posté le 20-01-2004 à 19:29:40
pourquoi s'embéter alors que tu peux combiner un sprintf et un XDrawText (ou XDrawString)
pour ton deuxième problème, à mon avis c'est le fait de mettre une boucle infinie "while(1)": tu ne sors jamais de ta boucle, donc tu ne rends jamais la main au système pour la gestion des évènements (y compris les refresh,redraw etc.)
Marsh Posté le 20-01-2004 à 19:32:43
tu fais comment pr le sprintf ? tu aurais po un exemple?
sinon, je ne pense ca que ce soit le while (1) car ca marche bien avec d'ab, qd je mets mon XDrawLine() en dehors du while qui lis mon fichier ca marche...je ne vois pas pk :-/?
je te remercie pr ton aide
Marsh Posté le 20-01-2004 à 19:35:56
merci taz ;-)! sauf que ds le man ils disent qu'il retourne des int, dc je ne vois pas comment ;-)
Marsh Posté le 20-01-2004 à 19:36:39
bah si t'as un chaîne de caractères d'allouée tu fais:
sprintf(maChaine,"%d",monInt)
pour ton problème de while il faudrait regarder à quel endroit tu fais ta boucle d'évenements: si ton while(1) est ta boucle alors le problème est qu'il manque un ordre de refresh quelque part ou un truc dans le genre. Par contre si tu appelles XtAppMainLoop pour ta boucle d'évènements bah là t'as un problème boucle infinie +boucle système
Marsh Posté le 20-01-2004 à 19:36:54
ben tu vois printf ? ben pareil sauf que au lieu de sortir sur l'écran, ça tombe dans une chaîne de caractères
Marsh Posté le 20-01-2004 à 19:41:01
merci, mon while est ma boucle en effet.
mais je capte pas car ca marche qd je fais :
if (expose)
{
for (int nb = 0; toto[nb]; nb++)
XDrawLine(...);
}
ou ca aussi ca marche bien sur:
if(expose)
{
XDrawLine(...);
}
mais ca quequette :
if (expose)
{
while (str = getnextline(fd))
{
XDrawLine(...);
}
}
Marsh Posté le 20-01-2004 à 19:49:03
c'est ton "str = getnextline(fd)" qui foire
vu que je ne connais pas cette fonction je ne vais pas pouvoir beaucoup t'aider là
Marsh Posté le 20-01-2004 à 19:57:12
au fait, une question bête, t'es bien sûr que c'est "str = getnextline(fd)" et pas "str == getnextline(fd)"?
c'est con, mais un "=" au lieu d'un "==" c'est vite venu...
Marsh Posté le 20-01-2004 à 19:59:55
vi, c bien ca, c une fonction qui renvoie ligne par ligne le contenu d'un fichier
Marsh Posté le 20-01-2004 à 21:22:38
et str c'est quoi? c'est déclaré comment?
c'est bien un char *? pas un char[]?
si c'est un char *, il ne pointe pas au moins vers quelque chose d'alloué? (t'as pas fait de malloc sur str?)
Marsh Posté le 20-01-2004 à 21:43:55
alors à vue de nez je dirais que c'est ta fonction getnextline qui ne renvoie jamais null
Marsh Posté le 20-01-2004 à 21:46:29
dc la boucle par en couille :-)!
dac, je vais voir a ca, je te remercie de ton aide
Marsh Posté le 21-01-2004 à 10:46:37
bon, apparement on peut tt charger ds une fenetre, la copier ds une autre une fois que c finit et gerer l'expose sur cette derniere?
Marsh Posté le 22-01-2004 à 18:17:57
bon ben j'ai trouve, merci pour le reste ;-)!
pour ceux que ca interesse, il faut creer ce qu'on appelle un pixmap, ca travail en "local" et apres on envoie tt au serveur X ;-)!
plus aucun pb d'expose!
Marsh Posté le 22-01-2004 à 18:44:38
husiana a écrit : bon ben j'ai trouve, merci pour le reste ;-)! |
euh bah ouais, c'est quand même moins gourmand en resources que de redessiner ton graphique à chaque évènement
c'est un peu la base ça... enfin bon...
Marsh Posté le 22-01-2004 à 19:34:26
vi, et tu sais pas la meilleure ?
c mon premier prog en X Window :-)
dingue non?
Marsh Posté le 22-01-2004 à 19:46:30
je voulis vous demander, en tant que nwebee, je fais un XFillPolygon, mais mon polygon n'a pas de bordure, et j'en veux :-p! comment faire? j'ai cree mon GC mais je ne sais pas le modifier...est-ce ca?
sinon y'a pas un XDrawPolygon...?
merci de votre aide
Marsh Posté le 22-01-2004 à 20:03:52
screen_colormap = DefaultColormap(dpy, DefaultScreen(dpy));
XAllocNamedColor(dpy, screen_colormap, "yellow", &yellow, &yellow);
xgcv.foreground = yellow.pixel;
xgcv.fill_style = FillStippled;
xgcv.fill_rule = WindingRule;
xgcv.join_style = JoinRound;
gc1 = XCreateGC(dpy, win, GCForeground, &xgcv);
ca ca marche pas...pttt!
Marsh Posté le 22-01-2004 à 22:26:47
euh... qu'est-ce qui ne marche pas exactement?
parceque là tu n'as fait QUE créer ton GC... maintenant il s'agit de balancer la purée
Marsh Posté le 22-01-2004 à 22:28:15
ben apres je fais un XFillPolygon(...,...,gc1,......);
et j'ai le remplissage mais pas les bordures :-/
Marsh Posté le 22-01-2004 à 22:31:04
ben je voudrait qu'il me dessine des contours, et pas qu'un contenu, c possible?
Marsh Posté le 22-01-2004 à 22:31:33
tu veux genre les contours en noir et le contenu en rouge?
Marsh Posté le 22-01-2004 à 22:34:06
il faut pas que je refasse un drawline derriere qd mm :-/ ?
Marsh Posté le 22-01-2004 à 22:34:20
bah faut le faire en 2 fois...
XDrawPolygon pour le contour
XFillPolygon pour le contenu
Marsh Posté le 22-01-2004 à 22:41:05
ah ok, ben c ce que je fais, mais ca se supperpose et on vois pas toutes les lignes, a des fois c le polygone qui se mets devant
on peut pas gerer la profondeur ac le GC ?
Marsh Posté le 22-01-2004 à 22:43:09
tu peux gérer les masques, et tracer en XOR par exemple...
Marsh Posté le 22-01-2004 à 22:45:17
il va me faire le reste du polygon qd mm si je fais ca? vu que c sencé se supperposer ?
Marsh Posté le 22-01-2004 à 22:45:47
vu que c un XOR, ils ne pourront pas etre tt les deux au mm endroit...?
Marsh Posté le 23-01-2004 à 10:25:28
triste, ce matin je viens de faire un rm * ../ au lieu de faire un cp * ../
j'etais en train de recoder xfig...il etait presque finit...:-/!
il me manquait plus qu'a gerer les couleurs...
voila le seul import root hous.jpg qu'il me reste :-p :
Marsh Posté le 19-01-2004 à 10:36:13
comment afficher un int avec XWindow...?