Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| Ecriture en coleur dans une picture | |
| | |
Auteur | Message |
---|
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Ecriture en coleur dans une picture Ven 26 Fév 2010 - 16:21 | |
| Bonjour, J'ai essayé d'écrire en couleur dans une picture, dans laquelle je souhaite constituer un graphique de mon cru. Or, ce n'est pas possible. Je fais quelque chose comme ceci: - Code:
-
picture 10
2d_target_is 10 print_target_is 10
2d_pen_color 200,100,50 ' la vraie couleur est sans importance
print "Essai"
Le texte s'affiche bien dans la picture, mais en noir, quelque soit la couleur choisie pour pen_color. J'en déduis que pen_color n'est pas pris en compte par l'instruction print. Pourrait-on avoir une instruction éd-print qui par essence utiliserait toute la configuration 2d, soit pen_color, fill_color pour le fond de l'écriture, 2d_pen_width pour l'épaisseur ? Ca serait super ! Cordialement Klaus | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Ecriture en coleur dans une picture Ven 26 Fév 2010 - 16:39 | |
| AH oui, là il y a un vrai problème.
Je me souviens de QB ou l'on pouvait faire ceci: color 0,4:print "BON";:color 1,4:print"JOUR"
Cce qui donnait comme résultat BON en noir sur font rouge et JOUR collé, en bleu sur font rouge. Le premier chiffre de l'instruction color corespondait à la couleur de la police et le deuxième à la couleur du font. Et il y avait même des N° de couleur pour les couleurs clignotantes (de mémoire 26 était le vert clignotant)
Je suis de ton avis, cette question pour PANORAMIC, me parait très importante.
A+ | |
| | | Invité Invité
| Sujet: Re: Ecriture en coleur dans une picture Ven 26 Fév 2010 - 16:48 | |
| C'est pas plutôt ça : - Code:
-
picture 1 font_color 1,255,0,0 print_target_is 1:print "Test1" |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Ecriture en coleur dans une picture Ven 26 Fév 2010 - 17:12 | |
| Nicolas a raison, le 2D_Pen_Color s'applique aux fonctions graphiques 2d, et le Font_Color aux print de textes. par contre si on veut écrire sur un autre fond que blanc: - Code:
-
picture 1 2d_target_is 1: 2d_fill_color 255,255,0: ' fond jaune print_target_is 1: font_color 1,255,0,0: print "Toto" print: print "Tata" le fond jaune sera uniquement sous les textes. Par exemple, on peut faire: - Code:
-
Picture 1: width 1, 240 2d_target_is 1: Print_Target_Is 1: Font_Color 1,255,0,0 Font_Size 1,12 Print "Au clair"; Font_color 1,0,0,0: 2d_fill_color 255,255,0 print "de la lune"; Font_color 1,0,0,255: 2d_fill_color 255,255,255 print "mon ami Pierrot." end ce qui donne:
Dernière édition par JL35 le Ven 26 Fév 2010 - 18:03, édité 1 fois | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Ecriture en coleur dans une picture Ven 26 Fév 2010 - 18:03 | |
| @Nicolas et JL35 Merci pour la démonstration, Je n'aurait pas pensé d'associer une commande dite 2D avec du texte. Cela fait tout de même 2 commandes pour obtenir ce que l'on veut. Une commande unique du style PRINT_COLOR_TXT$ n,r,g,b,r,g,b,a$ serait la bienvenue, mais je ne sais si c'est faisable.
En tous cas, Merci. | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Ecriture en coleur dans une picture Ven 26 Fév 2010 - 18:05 | |
| J'étais en train d'éditer pendant que tu répondais... c'était juste pour montrer ce qu'on peut faire, l'essentiel c'est de pouvoir, même s'il faut écrire quelques lignes en plus. Une remarque à l'intention de Jack: Je ne sais plus si c'est licite, mais j'ai utilisé le ';' en fin de print pour fixer la position du prochain affichage sur la même ligne, sans retour chariot (comme en Basic). Par hasard dans la démo ci-dessus j'ai utilisé la taille de police 12, et tout va très bien. Mais si on change la taille ça ne va plus du tout, en fait le ; semble être traité comme une tabulation: affichage à des emplacements fixes. - Code:
-
Picture 1: width 1, 480 2d_target_is 1: Print_Target_Is 1 Font_Size 1,12 Font_Color 1,255,0,0 Print "Au clair "; Font_color 1,0,0,0: 2d_fill_color 255,255,0 print "de la lune"; Font_color 1,0,0,255: 2d_fill_color 255,255,255 print " mon ami Pierrot." print Font_Size 1,18 Font_Color 1,255,0,0 Print "Au clair "; Font_color 1,0,0,0: 2d_fill_color 255,255,0 print "de la lune"; Font_color 1,0,0,255: 2d_fill_color 255,255,255 print " mon ami Pierrot." end donne ceci: | |
| | | Invité Invité
| Sujet: Re: Ecriture en coleur dans une picture Ven 26 Fév 2010 - 19:25 | |
| Je vois que tu as fait des progrets. Le point virgule ici fonctionne, mais la virgule par contre faire hurler Panoramic Pour Klaus: jete un oeil ici: https://panoramic.1fr1.net/ce-qui-est-en-cours-f4/liste-des-projets-au-30-novembre-2009-t436-15.htm#4205 , cela te donnera un aperçu de ce qui est possible Le programme à la fin n'est là que pour montrer la possibilité de faire une sorte de mémo "rich" ou quelque chose comme ça que vous dites. Ce n'était pas mon but de le finir. Je rajoute que Jack prépare une fonction qui donnera l'espace nécessaire pour afficher un texte (je ne vais retourner dans les archives, mais je l'ai vu), et à partir de là, on pourra utiliser toutes les polices. Actuellement pour savoir où écrire précisément, on doit utiliser une polices (je ne sais plus le nom) dont tous les caractères ont la même largeur, et faire des essais selon la hauteur (size) pour savoir combien de pixels sont nécessaire à chacun d'eux, et donc calculer la position.
Dernière édition par cosmos70 le Sam 27 Fév 2010 - 0:03, édité 1 fois |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Ecriture en coleur dans une picture Ven 26 Fév 2010 - 21:00 | |
| Je ne trouve pas que le point virgule fonctionne, puisqu'il positionne le curseur à un endroit précis (indépendant de la size) au lieu de la fin du texte affiché. | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Ecriture en coleur dans une picture Ven 26 Fév 2010 - 21:10 | |
| Bien vu JL35, le coup de la taille de la police il fallait le trouver.
@cosmos70, je me souviens que le sujet a déja été abordé. Je ne sais pas trop ce que l'on entent par mémo rich, mais je pense que la gestion des couleurs de police et de la couleur du fond, dans PANORAMIC, ne sont pas satisfaisant. Trop compliqué et trop de commandes.
Pardonne moi, Jack, je suis un idéaliste. Cela n'empêche en rien d'utiliser PANORAMIC, mais j'y voit une faiblesse par rapport à d'autres languanges. Et bien sur, si tu avais autant de temps disponible que beaucoups d'entre nous.......
Cela dit, je ne vois pas d'urgence, car ce problème de coloration d'un texte avec son fond, ne constitue pas un élément essentiel (sauf peut-être pour les jeux).
Paris ne s'ai pas faite en un jour...
A+ | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Ecriture en coleur dans une picture Ven 26 Fév 2010 - 21:41 | |
| Ca doit être lié au 2d_Fill_Color, parceque si on fait: - Code:
-
Picture 1: width 1, 480 2d_target_is 1: Print_Target_Is 1 Font_Size 1,12 Print "48 divisé par 4 = "; str$(48/4) print Font_Size 1,18 Print "128 divisé par 16 = "; str$(128/16) print Font_Size 1,24 Print "14 divisé par 4 = "; str$(14/4) print end là ça marche parfaitement: | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Ecriture en coleur dans une picture Ven 26 Fév 2010 - 22:05 | |
| Bonsoir, et merci à tous !
Je vais explorer les pistes énoncées.
Pour cosmos70: malheureusement, ton lien est mort; j'essayerai de retrouver l'information autrement.
Ceci dit, je vois bien dans vos commentaires et suggestions à tous qu'il s'agit là de quelque chose qui peut avoir un réel intérêt pour faciliter la gestion des graphiques. Je voulais utiliser un picture pour constituer, non pas une image type photo ou clip-art, mais pour un graphique de type courbes multiples avec libellés et zones quartiles marquées par des couleurs de fond. Donc, une écriture simple en couleur dans un picture aurait été la bienvenue. Je vais tenter la méthode de JL35..
cordialement Klaus | |
| | | Invité Invité
| Sujet: Re: Ecriture en coleur dans une picture Sam 27 Fév 2010 - 0:04 | |
| |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Ecriture en coleur dans une picture Sam 27 Fév 2010 - 10:32 | |
| Je reviens sur ce que j'ai dit ci-dessus concernant l'utilisation du point-virgule dans un Print (mes tests n'étaient pas complets): - Code:
-
Picture 1: Width 1, 480 2D_Target_Is 1: Print_Target_Is 1 Font_Size 1,24 Print "14 divisé par 4 = "; Str$(14/4): ' <=========== Ca marche ! Print: Print Print "14 divisé par 4 = ";: Print Str$(14/4): ' <==== Ca ne marche pas ! End Dans le 2ème cas, le ';' est traité comme une tabulation à partir du début de la ligne... | |
| | | Invité Invité
| Sujet: Re: Ecriture en coleur dans une picture Sam 27 Fév 2010 - 12:38 | |
| C'est curieux, j'avais l'essai d'un print du genre: print "ceci est un ";:print "essai" et cela fonctionnait comme une seule phrase. Je ne sais pas si à un certain moment cela marche comme une tabulation. Jack devrait vérifier: une virgule dans une instruction print, marche comme un point-virgule, et si ici le point-virgule marche comme une tabulation, alors ne soyez pas été si je marche de temps en temps la tête en bas. |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Ecriture en coleur dans une picture Sam 27 Fév 2010 - 13:37 | |
| Moi aussi, j'ai fait plusieurs essais avec ";" et l'instruction print. Ce qui est sûr, c'est qu'il y a une anomalie.
Je ne pense pas que Panoramic interprète le ";" comme une tabulation. Plus probablement, en rencontrant un ";" en fin d'instruction, il mémorise la "position" d'impression courante non pas en pixels mais en nombre de caractères. Et lorsqu'il reprend le print suivant, il effectue un décalage selon le nombre de caractères mémorisés et une taille de police standart, sans tenir compte de la taille de police réellement utilisée.
Le problème est en fait plus complexe que cela: les deux print successifs peuvent très bien être effectués avec une taille de police et d'autres attributs (gras, ...) différents. Il n'y a alors plus aucun moyen de recalculer la vraie position d'écriture.
Ce qui devrait être fait, ce serait de mémoriser la position de fin de print (en rencontrant le ";") sous forme de pixels (x,y), dans les mêmes mesures que celles utilisées par les commandes print_locate, print_x_locate et print_y_locate. Et on pourrait même suggérer à Jack (pardon pour le foisonnement des demandes) de faire deux fonctions qui retourneraient la position actuelle d'impression, du type: pos_horizontale% = print_x_locate%(objet) pos_verticale% = print_y_locate%(objet) ce qui permettrait de gérer les position par programme.
Pour l'heure, je ne vous qu'un seul moyen de contourner le problème: définir une variable string dans laquelle on constitue petit à petit le texte à imprimer sur une seule ligne, puis d'imprimer cette ligne avec un seul print. Evidemment, cela n'a de sens que s'il n'y a pas de changement de police ou d'attributs de police à l'intérieur de la même ligne, car pour l'heure, ceci n'est pas possible à commander à l'intérieur d'un string. Comme cela a déjà été dit plus haut, il manque des fonctions du type print_command$(code) avec lesquelles on pourrait pas exemple faire ceci:
print "Le montant de "+print_command$("bold")+str$(solde)+print_command$(""nobold")+" a été payé."
Pour JL35: les tests avec font_color sont concluant; j'aurais dû le voir car c'est parfaitement documenté dans l'aide. Autant pour moi...
Cordialement Klaus | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Ecriture en coleur dans une picture Sam 27 Fév 2010 - 14:16 | |
| D'accord avec toi Klaus. Mais ce qui serait bien, et dont a déjà parlé Jack, ce serait de pouvoir connaître la longueur d'un string en pixels en fonction de la police et de la taille. ce qui permettrait des positionnements précis et des cadrages (centrage, cadrage à droite). Mais ce n'est peut-être pas aussi évident que ça à calculer si c'est une police proportionnelle. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Ecriture en coleur dans une picture Sam 27 Fév 2010 - 14:50 | |
| D'après mes connaissances, ce n'est en effet pas évident à calculer. La taille d'un caractère varie en effet en fonction du type de police (proportionnelle, espacement fixe, true type ou non), du poids (gars ou pas) de la taille de la police etc.
Un tel calcul est complexe à réaliser car il faudrait tenir compte de la taille individuelle de chaque caractère en fonction des attributs de la police, puis additionner tout cela. Le cas se complique encore quand on sait que l'on peur aisément ajouter des polices téléchargées, voir même fabriquer ces propres polices, auquel cas ce calcul deviendra carrément impossible.
Il serait sûrement plus simple de mémoriser le pont de fin d'écriture d'un print, en unités graphiques, et de se repositionner au même pour au prochain print sile précédent s'est terminé par un ";". Les deux fonctions que j'ai suggérée ci-dessus pour récupérer ces coordonnées pourraient alors aisément utilisées pour gérer les impressions nous-même. | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Ecriture en coleur dans une picture Sam 27 Fév 2010 - 15:03 | |
| Je n'y connais pas grand chose, mais il doit bien y avoir quelque chose comme une dll Windows qui renvoie la longueur d'un texte, quels que soient la police, la taille et les enrichissements, et c'est ça que je pensais que Jack pourrait utiliser pour écrire la fonction 'longueur en pixels d'un texte donné'. Sinon, comment feraient tous les traitements de texte pour faire du cadrage au milieu ou à droite ? | |
| | | Invité Invité
| Sujet: Re: Ecriture en coleur dans une picture Sam 27 Fév 2010 - 15:28 | |
| Je vais peut-être dire une connerie, mais qui tente rien n'a rien. Est-ce que l'un de vous connait un langage dont l'écriture d'un mot, d'un texte donne la position de fin de texte. Si c'est le cas, peut-être est-il possible de faire une routine pour écrire le texte, et récupérer la valeur? Bon, il est encore tôt, peut-être devrais-je aller me coucher. @+ |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Ecriture en coleur dans une picture Sam 27 Fév 2010 - 15:52 | |
| Ben, d'abord c'est un peu tôt pour aller se coucher ! Et puis... ton idée me laisse perplexe, personnellement je ne vois rien de tel, peut-être Klaus ? | |
| | | Invité Invité
| Sujet: Re: Ecriture en coleur dans une picture Sam 27 Fév 2010 - 15:55 | |
| Il m'ait venu une idée pour résoudre ce problème en Panoramic. ça à l'air de marcher, mais il me faut encore un peu de temps pour mettre un code qui marche. |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Ecriture en coleur dans une picture Sam 27 Fév 2010 - 16:00 | |
| Tiens, moi aussi il me vient une idée, un peu tordue mais ça pourrait marcher: écrire le texte dans un picture blanc par exemple, puis tester les colonnes de pixels à partir de la fin jusqu'à rencontrer un pixel noir... qui serait la longueur atteinte. Bon, j'attends l'idée de cosmos. | |
| | | Invité Invité
| Sujet: Re: Ecriture en coleur dans une picture Sam 27 Fév 2010 - 16:05 | |
| Amusez-vous avec cela: - Code:
-
dim a$,l%,r,g,b,defaut,a% ,b% ,suite
width 0,1000 picture 1:width 1,980:color 1,255,250,177:font_color 1,0,0,255:font_size 1,12 memo 2:top 2,100
2d_target_is 1:print_target_is 1:2d_fill_color 255,250,177 print_locate 50,10:a$="ceci est un essai":print a$:defaut=len(a$)*15+50 print_target_is 2 print "defaut=",defaut
for b%=10 to 20 for a%=defaut + 50 to 1 step -1 :' print a%," :",color_pixel_blue(1,a%,b%) if color_pixel_blue(1,a%,b%)=255 print "a%="+str$(a%)+" b%="+str$(b%):if suite<a% then suite=a% exit_for end_if next a% next b% print suite print_target_is 1 print_locate suite+2,10:print " la suite" ayant écrit en bleu, j'ai donc testé la couleur bleu C'est à peut prêt ton idée, mais je le teste directement sur picture Je montre l'exemple, mais j'ai pas le temps de fignoler maintenant. J'ai le principe, ça me convient pour l'instant. |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Ecriture en coleur dans une picture Sam 27 Fév 2010 - 16:16 | |
| C'est exactement l'idée que j'étais en train de coder, mais tu as dégainé beaucoup plus rapidement que moi. Bon, avec ta permission, je vais m'amuser avec ton code. | |
| | | Invité Invité
| Sujet: Re: Ecriture en coleur dans une picture Sam 27 Fév 2010 - 16:33 | |
| Pas de problème. Je donne la méthode pour ceux qui n'aurait pas compris: Je place un texte avec print_locate x,y je mets le texte dans une variable pour prendre la longueur, et je fais une estimation large du nombre de pixels, et j'en rajoute un peu. Si je décide d'écrire en gros, peut-être partir du bord droit. Connaissant la couleur de la police, j'utilise la caractéristique de la couleur de celle-ci pour la comparer à celle du fond, de la droite (estimation) vers le texte. Lorsque j'obtiens la couleur recherchée, je garde la position de celle-ci. Si sur la colonne d'un caractère, une valeur est plus forte, il faut garder celle-là. Pour le teste j'ai pris la valeur bleu, mais très certainement il faudra prendre la valeur des 3 couleurs par rapport à la couleur du picture. selon les valeurs du picture en couleur et celle du texte, il pourrit y avoir des valeurs identiques. Ici je l'ai fait sur 10 colonnes, mais il faut faire plus. De plus il faut mettre la variable defaul à zéro avant la boucle for/next. |
| | | Contenu sponsorisé
| Sujet: Re: Ecriture en coleur dans une picture | |
| |
| | | | Ecriture en coleur dans une picture | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |