FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» PANORAMIC V 1
Ecriture en coleur dans une picture - Page 2 Emptypar Klaus Aujourd'hui à 9:53

» Je teste PANORAMIC V 1 beta 1
Ecriture en coleur dans une picture - Page 2 Emptypar Klaus Aujourd'hui à 9:52

» bouton dans autre form que 0
Ecriture en coleur dans une picture - Page 2 Emptypar leclode Hier à 13:59

» KGF_dll - nouvelles versions
Ecriture en coleur dans une picture - Page 2 Emptypar Klaus Hier à 11:41

» Gestion d'un système client-serveur.
Ecriture en coleur dans une picture - Page 2 Emptypar Klaus Hier à 10:23

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Ecriture en coleur dans une picture - Page 2 Emptypar Froggy One Jeu 2 Mai 2024 - 11:16

» @Jack
Ecriture en coleur dans une picture - Page 2 Emptypar Jack Mar 30 Avr 2024 - 20:40

» trop de fichiers en cours
Ecriture en coleur dans une picture - Page 2 Emptypar papydall Lun 29 Avr 2024 - 23:39

» Une calculatrice en une ligne de programme
Ecriture en coleur dans une picture - Page 2 Emptypar jean_debord Dim 28 Avr 2024 - 8:47

» Form(résolu)
Ecriture en coleur dans une picture - Page 2 Emptypar leclode Sam 27 Avr 2024 - 17:59

» Bataille navale SM
Ecriture en coleur dans une picture - Page 2 Emptypar jjn4 Ven 26 Avr 2024 - 17:39

» Les maths du crocodile
Ecriture en coleur dans une picture - Page 2 Emptypar jean_debord Jeu 25 Avr 2024 - 10:37

» Naissance de Crocodile Basic
Ecriture en coleur dans une picture - Page 2 Emptypar jean_debord Jeu 25 Avr 2024 - 8:45

» Dessine-moi une galaxie
Ecriture en coleur dans une picture - Page 2 Emptypar jjn4 Lun 22 Avr 2024 - 13:47

» Erreur END_SUB
Ecriture en coleur dans une picture - Page 2 Emptypar jjn4 Lun 22 Avr 2024 - 13:43

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier
-39%
Le deal à ne pas rater :
Ordinateur portable ASUS Chromebook Vibe CX34 Flip
399 € 649 €
Voir le deal

 

 Ecriture en coleur dans une picture

Aller en bas 
3 participants
Aller à la page : Précédent  1, 2
AuteurMessage
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Ecriture en coleur dans une picture - Page 2 Empty
MessageSujet: Re: Ecriture en coleur dans une picture   Ecriture en coleur dans une picture - Page 2 EmptySam 27 Fév 2010 - 17:08

J'ai repris ton code presque tel quel en essayant de paramétrer un peu pour faciliter les essais.
De plus j'ai inversé les boucles: test des colonnes entières depuis la fin, comme ça on sort dès qu'un pixel est différent de la couleur de fond. J'ai essayé les tailles de 8 à 30, ça marche. C'est empirique, mais faute de mieux...
Code:
dim a1$, a2$, l%, lmax, xp%, yp%, tr%, x, y, size, cf, c, r%, g%, b%

a1$ = "ceci est un essai pour voir"
a2$ = " la suite"
x = 50: y = 10
size = 30

width 0,800: height 0, 150
r% = 255: g% = 250: b% = 180: cf = 256*256*r% + 256*g% + b%: ' couleur fond
picture 1: width 1,780: color 1, r%, g%, b%
font_name 1, "Arial": font_color 1, 0, 0, 255:font_size 1, size

2d_target_is 1:print_target_is 1:2d_fill_color r%, g%, b%
print_locate x, y: print a1$

lmax = (size+1)*len(a1$): tr% = 0
For l% = lmax to 1 step -1
    for yp% = y to y+size
        c = 256*256*color_pixel_red(1,l%+x,yp%)+256*color_pixel_green(1,l%+x,yp%)+color_pixel_blue(1,l%+x,yp%)
        if c <> cf then tr% = 1: exit_for
    next yp%
    if tr% = 1 then Exit_for
next l%
print_locate x+l%+2, y: print a2$
end


Dernière édition par JL35 le Sam 27 Fév 2010 - 17:37, édité 1 fois
Revenir en haut Aller en bas
Jean Claude

Jean Claude


Nombre de messages : 5948
Age : 69
Localisation : 83 Var
Date d'inscription : 07/05/2009

Ecriture en coleur dans une picture - Page 2 Empty
MessageSujet: Re: Ecriture en coleur dans une picture   Ecriture en coleur dans une picture - Page 2 EmptySam 27 Fév 2010 - 17:36

il y a des discussions qui sont édifiantes. J'ai honte. Je viens de découvrir grace à Klauss les 2 instructions PRINT_X_LOCATE et PRINT_Y_LOCATE. Je vais de suite consulter un ophtalmo.
Revenir en haut Aller en bas
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Ecriture en coleur dans une picture - Page 2 Empty
MessageSujet: Re: Ecriture en coleur dans une picture   Ecriture en coleur dans une picture - Page 2 EmptySam 27 Fév 2010 - 17:41

Il te faudra attendre lundi. Maintenant c'est fermé.
A moins que ta pendule ne soit pas assez grosse pour voir les aiguilles ?
Enfin, c'est toi qui vois.
Si je puis dire...
Revenir en haut Aller en bas
Jean Claude

Jean Claude


Nombre de messages : 5948
Age : 69
Localisation : 83 Var
Date d'inscription : 07/05/2009

Ecriture en coleur dans une picture - Page 2 Empty
MessageSujet: Re: Ecriture en coleur dans une picture   Ecriture en coleur dans une picture - Page 2 EmptySam 27 Fév 2010 - 17:50

La pendule je ne la retrouve pas car j'ai perdu mes lunettes et comme je ne les ai pas (mes lunettes), je ne peux pas les retrouver. cyclops
Revenir en haut Aller en bas
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Ecriture en coleur dans une picture - Page 2 Empty
MessageSujet: Re: Ecriture en coleur dans une picture   Ecriture en coleur dans une picture - Page 2 EmptySam 27 Fév 2010 - 17:52

Achète un chien ?
Revenir en haut Aller en bas
Invité
Invité




Ecriture en coleur dans une picture - Page 2 Empty
MessageSujet: Re: Ecriture en coleur dans une picture   Ecriture en coleur dans une picture - Page 2 EmptySam 27 Fév 2010 - 18:02

Je n'ai pas reporté ton code, je lis en direct. Est-ce que je me trompe ou pas? dès que tu as trouvé un pixel différent tu quittes, d'après ce que je vois. Si c'est le cas, ça ne suffit pas. la lettre "T" a le maxi de pixel en haut, la lettre "L" est en bas.
Excuses moi si j'ai mal compris.

En y repensant, ton idée d'écrire au départ dans une autre forme peut-être intéressant lorsqu'on veut centrer du texte


Dernière édition par cosmos70 le Sam 27 Fév 2010 - 18:05, édité 1 fois
Revenir en haut Aller en bas
Jean Claude

Jean Claude


Nombre de messages : 5948
Age : 69
Localisation : 83 Var
Date d'inscription : 07/05/2009

Ecriture en coleur dans une picture - Page 2 Empty
MessageSujet: Re: Ecriture en coleur dans une picture   Ecriture en coleur dans une picture - Page 2 EmptySam 27 Fév 2010 - 18:02

Bonne idée et avec une canne blanche Very Happy
Revenir en haut Aller en bas
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Ecriture en coleur dans une picture - Page 2 Empty
MessageSujet: Re: Ecriture en coleur dans une picture   Ecriture en coleur dans une picture - Page 2 EmptySam 27 Fév 2010 - 18:13

Oui cosmos, mais comme j'ai dit je décrémente d'abord les x, puis pour chaque position x je teste toute la colonne. Ca me paraît plus juste.
Il y a un ou deux petits bugs que j'ai corrigés mais pas dans le code.
Là j'ai plus le temps, désolé.
Revenir en haut Aller en bas
Invité
Invité




Ecriture en coleur dans une picture - Page 2 Empty
MessageSujet: Re: Ecriture en coleur dans une picture   Ecriture en coleur dans une picture - Page 2 EmptySam 27 Fév 2010 - 18:14

Je viens de faire une constatation. J'ai voulu remplacer print_locate, par print_x_locate horiz..., vu qu'on reste sur la même ligne, et là surprise, l'affichage se fait en haut. Print_x_locate et print_y_locate marcherait ensemble et serait indépendant de print_locate. Personnellement j'aurais associé les trois et utiliser l'un ou l'autre selon le cas.
Jean Claude dit qu'il ne voit plus clair, peut-être qu'il double au contraire.
Revenir en haut Aller en bas
Jean Claude

Jean Claude


Nombre de messages : 5948
Age : 69
Localisation : 83 Var
Date d'inscription : 07/05/2009

Ecriture en coleur dans une picture - Page 2 Empty
MessageSujet: Re: Ecriture en coleur dans une picture   Ecriture en coleur dans une picture - Page 2 EmptySam 27 Fév 2010 - 18:25

à cette heure ci, tout de même !!!!
Revenir en haut Aller en bas
Invité
Invité




Ecriture en coleur dans une picture - Page 2 Empty
MessageSujet: Re: Ecriture en coleur dans une picture   Ecriture en coleur dans une picture - Page 2 EmptySam 27 Fév 2010 - 18:31

Il y a 40 ans j'ai eu des chefs d'équipe qui buvaient 7 litres de vin sur le chantier (pas moi, je vous rassure, sinon je ne serais surement sur ce forum -ça m'étonnerait), aussi à cette heure-ci je crois que les limites pourrait être dépassé depuis longtemps. Mais comme tu as dis que tu aimais le bon vin, les bonnes choses, que faisais-tu ce matin?
Revenir en haut Aller en bas
Jean Claude

Jean Claude


Nombre de messages : 5948
Age : 69
Localisation : 83 Var
Date d'inscription : 07/05/2009

Ecriture en coleur dans une picture - Page 2 Empty
MessageSujet: Re: Ecriture en coleur dans une picture   Ecriture en coleur dans une picture - Page 2 EmptySam 27 Fév 2010 - 18:44

Le bon vin oui, mais en petite quantité.

J'arrête sur le sujet, Jack aime bien la plaisanterie mais il ne faut pas abuser.

Bonne soirée A+. Very Happy
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12291
Age : 74
Localisation : Ile de France
Date d'inscription : 29/12/2009

Ecriture en coleur dans une picture - Page 2 Empty
MessageSujet: Re: Ecriture en coleur dans une picture   Ecriture en coleur dans une picture - Page 2 EmptySam 27 Fév 2010 - 23:50

Bonsoir,

J'avais cru avoir posté cela déjà, mais j'ai dû faire une erreur: je ne retrouve plus mon poste ! C'est un comble. Alors, voilà, je recommence avec une version améliorée.

J'avais posté quelques infos techniques de Microsoft concernant Visual Basic. En gros, ils disaient qu'il n'y a aucun moyen évident de pévoir la taille d'une chaîne imprimée dans un picture, dans une form ou sur une imprimante, à cause des polices proportionnelles. Je ne vais pas y revenir; si certains s'y intéressent, je ressortirai les textes et je les reposterai.

Je n'ai pas de solution immédiate dans Panoramic. Cependant, j'ai réalisé un petit utilitaire (encore un...) qui permet de visualiser son texte à l'écran, avec la police, sa taille et ses attributs (gras, italique, souligné) et de voir affiché la largeur et la hauteur en pixels, en points et en millimètres.

Si la demande existe, je peux en faire un utilitaire en mode commande qui permettrait dans Panoramic de récupérer ces informations de façon transparente; ceci dit, comme il s'agit d'un programme externe lancé par execute_wait, ce ne sera certainement pas très rapide, et difficile à utiliser dans une boucle sans intervention humaine, par exemple.

Voici le lien pour l'outil interactif:

http://www.2shared.com/file/11722014/e89dd754/TextLen.html

Vous verrez, c'est spectaculaire !

Cordialement Klaus
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Invité
Invité




Ecriture en coleur dans une picture - Page 2 Empty
MessageSujet: Re: Ecriture en coleur dans une picture   Ecriture en coleur dans une picture - Page 2 EmptyDim 28 Fév 2010 - 2:23

Moi je pense que l'idée qu'on a eu JL35 et moi, n'est pas mauvaise et permet à partir d'un sous programme du code et quelques modifications de s'y retrouver. En plus si à chaque print on mets en tableau les positions, on doit pouvoir modifier chaque partie de texte, et replacer le restant. Moi j'ai fait un code rapide pour vérifier la faisabilité, vu que c'est pas mon problème pour l'instant. JL35 la repris, peut-être que toi tu peux encore l'améliorer. Je pense que ce type de code en Panoramic sera de toute façon plus rapide que de passer par execute, vu que si on veut transmettre une chaine de caractères avec des espaces, il aura un problème de passage de paramètre. Il faudra certainement faire un transfert avec un fichier, ce qui ralentira le code. Je jeterai un coup d'oeil un autre jour.
Bonne nuit
Revenir en haut Aller en bas
Jean Claude

Jean Claude


Nombre de messages : 5948
Age : 69
Localisation : 83 Var
Date d'inscription : 07/05/2009

Ecriture en coleur dans une picture - Page 2 Empty
MessageSujet: Re: Ecriture en coleur dans une picture   Ecriture en coleur dans une picture - Page 2 EmptyDim 28 Fév 2010 - 9:05

Merci Klauss, en ce moment il pleut des utilitaires partout.

J'ai une question: Les dimensions en point corresponde à quoi ?

A+
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12291
Age : 74
Localisation : Ile de France
Date d'inscription : 29/12/2009

Ecriture en coleur dans une picture - Page 2 Empty
MessageSujet: Re: Ecriture en coleur dans une picture   Ecriture en coleur dans une picture - Page 2 EmptyDim 28 Fév 2010 - 15:19

Bonjour à tous !

Voici une version de TextLen.exe qui détermine la largeur et la hauteur d'un string, et qui est utilisable en mode ligne de commande:

http://www.2shared.com/file/11740389/60e193d2/TextLen.html

Voici la documentation:

Code:

TextLen - calcul des dimensions d'un texte
==========================================

Ce programme peut être lancé en mode interactif; il permet alors de visualiser des textes avec des attributs et leur largeur et hauteur. La commande résultante ainsi que les 3 lignes du fichier résultant (voir plus bas) peuvent être copiés dans le presse-papier par les boutons "Copier" correspondants. Le fichier résultant est affiché, mais pas créé en mode interactif.

Il peut également être lancé en mode commande, avec la syntaxe suivante:

TextLen /text="chaîne de caractères" /font="nom police" /fontsize=n /mode="UBI"

le mode est composé de codes pour les 3 attributs:
   souligné      U ou S
   gras          B ou G
        italique      I

Dans ce cas, le programme effectue les calculs sans affichage à l'écran, crée un fichier en sortie dans le répertoire de lancement du programme TextLen.tmp qui peut être utilisé par le programme appelant, avant de le supprimer. Ce fichier résultat contient les informations sur 3 lignes. Chaque ligne contient 2 nombres et un texte expliquant les nombres. Ce texte peut bien sûr être ignoré. Le premier nombre de chaque ligne est la largeur du texte, le deuxième nombre est la hauteur du texte. La première ligne contient les informations en pixels, la deuxième en points et la troisième en millimètres. Les valeurs sont des valeurs flottantes avec ",".

Exemple d'une commande:
   /text="AZERTY" /font="Times New Roman" /fontsize=12 /mode="BI"

Le fichier résultant de cette commande ressemble donc à cela:
   63/19/  largeur/hauteur en pixels
   47,25/14,25/  largeur/hauteur en points
   16,66877/5,027088/  largeur/hauteur en millimètres


Et voici un petit programme de démonstration en Panoramic pour l'utilisation. On peut saisir un texte à l'écran, choisir parmi quelques polices et tailles et gérer les attributs comme souligné, gras et italique. En cliquant sur le bouton "Calculer", le programme affiche pour info les paramètres à passer à TextLen.exe, puis lance ce dernier, récupère les résultats et les affiche dans un mémo. On peut voir aisément l'influence des changements de paramètres sur es tailles.

Code:

rem *************************************************
rem *                                              *
rem * definitions spécifiques au programme de test  *
rem *                                              *
rem *************************************************

label calculer_taille, calcule
dim i%

rem *************************************************
rem *                                              *
rem * definitions spécifiques au calcul des tailles *
rem *                                              *
rem *************************************************

dim ct_text$, ct_police$, ct_taille%, ct_mode$
dim ct_pixel$, ct_point$, ct_mm$
dim ct_cmd$

rem *************************************************
rem *                                              *
rem * préparation de la form principale            *
rem *                                              *
rem *************************************************

rem ----------- zone pour saisir le texte à mesurer
alpha 1
caption 1,"Chaîne à tester:"
top 1,10
left 1,10
edit 2
top 2,10
left 2,100

rem ----------- pour les polices
container_option 100
top 100,40
left 100,10
width 100,200
height 100,100
caption 100,"Polices"

rem ----------- pour les tailles
container_option 200
top 200,40
left 200,230
width 200,80
height 200,100
caption 200,"Tailles"

rem ----------- pour les modes (juste pour garder le même graphisme...)
container_option 300
top 300,40
left 300,330
width 300,180
height 300,100
caption 300,"Modes"

rem ----------- options des polices
option 101
parent 101,100
top 101,15
left 101,5
caption 101,"Ravie"
option 102
parent 102,100
top 102,35
left 102,5
caption 102,"Script"
option 103
parent 103,100
top 103,55
left 103,5
caption 103,"Ultra Serif SF"
option 104
parent 104,100
top 104,75
left 104,5
caption 104,"Verdana"

rem ----------- options des tailles
option 201
parent 201,200
top 201,15
left 201,5
width 201,50
caption 201,"8"
option 202
parent 202,200
top 202,35
left 202,5
width 202,50
caption 202,"12"
option 203
parent 203,200
top 203,55
left 203,5
width 203,50
caption 203,"16"
option 204
parent 204,200
top 204,75
left 204,5
width 204,50
caption 204,"24"

rem ----------- checkboxes pour les modes d'affichage
check 301
top 301,55
left 301,340
caption 301,"Souligné"
check 302
top 302,75
left 302,340
caption 302,"Gras"
check 303
top 303,95
left 303,340
caption 303,"Italique"

rem ----------- zone pour afficher les tailles calculées
memo 9
left 9,10
top 9,200
width 9,500
height 9,80

rem ----------- bouton pour lancer le calcul
button 10
caption 10,"Calculer"
top 10,300
left 10,10
on_click 10,calcule

rem ----------- police et taille par défaut
mark_on 101
mark_on 201

end

rem ----------- on_click pour lancer le calcul
calcule:
rem ----------- on prépare d'abord les variables en entrée
ct_text$ = text$(2)
for i%=101 to 104
    if checked(i%)=1 then ct_police$ = caption$(i%)
next i%
for i%=201 to 204
    if checked(i%)=1 then ct_taille% = val(caption$(i%))
next i%
ct_mode$ = ""
if checked(301)=1 then ct_mode$= ct_mode$ + "U"
if checked(302)=1 then ct_mode$= ct_mode$ + "B"
if checked(303)=1 then ct_mode$= ct_mode$ + "I"

rem ----------- on fabrique le string de paramètres pour TextLen.exe
ct_cmd$ = "/text=" + chr$(34) + ct_text$ + chr$(34) + " /font="
ct_cmd$ = ct_cmd$ + chr$(34) + ct_police$ + chr$(34) + " /fontsize="
ct_cmd$ = ct_cmd$ + str$(ct_taille%) + " /mode="
ct_cmd$ = ct_cmd$ + chr$(34) + ct_mode$ + chr$(34)
rem ----------- juste pour voir...
message ct_cmd$
rem ----------- appel du sous-programme pour mesurer le texte
gosub calculer_taille
rem ----------- afficher les résultats
clear 9
item_add 9,ct_pixel$
item_add 9,ct_point$
item_add 9,ct_mm$
return

rem *************************************************************
rem * calculer_taille                                          *
rem *                                                          *
rem * Cette routine calcule les dimensions pour un string.      *
rem * Entrée:                                                  *
rem *      ct_text$    texte à mesurer                        *
rem *      ct_police$  police à utiliser                      *
rem *      ct_taille%  taille de la police                    *
rem *      ct_mode$    combinaisons de B|G, U|S, I            *
rem * Sortie:                                                  *
rem *      ct_pixel$    ligne concernant les pixels            *
rem *      ct_point$    ligne concernant les points            *
rem *      ct_mm$      ligne concernant les millimètres      *
rem * Chaque ligne contient:                                    *
rem *      largeur/hauteur/  décriptif verbal                *
rem *                                                          *
rem * La variable ct_cmd$ est utilisée de façon interne pour    *
rem * construire la commande pour TextLen.exe                  *
rem *                                                          *
rem *************************************************************


calculer_taille:
execute_wait "TextLen " + ct_cmd$
file_open_read 1,"TextLen.tmp"
file_readln 1,ct_pixel$
file_readln 1,ct_point$
file_readln 1,ct_mm$
file_close 1
file_delete "TextLen.tmp"
return


Quant à la méthode d'analyse d'un picture dans lequel on a fait un print, je suis en train de l'analyser. C'est prometteur - à voir. Cependant, cela donne la mesure en pixels uniquement.

A propos des "points": un point est un 72ème de pouce, on a donc 72 points par pouce. C'est une mesure pratique si l'on doit gérer des formats de papier en mesures américaines (listing 11 pouces, par exemple). Les pixels sont mieux adaptés aux écrans et imprimantes modernes: un pixel est la plus petite unité graphique représentable sur ces péripériques. Et les millimètres, ma foi, je ne sais pas trop...
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


Nombre de messages : 12291
Age : 74
Localisation : Ile de France
Date d'inscription : 29/12/2009

Ecriture en coleur dans une picture - Page 2 Empty
MessageSujet: Re: Ecriture en coleur dans une picture   Ecriture en coleur dans une picture - Page 2 EmptyDim 28 Fév 2010 - 19:25

Bonsoir,

Voilà un message pour JL35, mais je pense que cela pourrait intéresser Jack aussi, car sans en être sûr à 100 %, je pense avoir découvert un bug.

J'ai repris ton programme pour déterminuer la taille d'un texte écrit dans une picture, en comparant les couleurs avec la couleur de fond. Or, j'ai relevé 2 problèmes.

Le premier concerne ton code. Tu démarres une boucle de recheche extérieure de lmax à 1 step -1 et tu testes toute la colonne pour trouver le premier pixel d'une couleur différente de la couleur de fond. Problème: lmax vaut 837 alors que ton picture ne fait que 780 de large. En effet, lmax=(size+1)*len(a1$), et avec size=30 et 27 caractères dans a1$, on a 837. Je pense qu'il serait utile de démarrer à 780, et même à 779 car dans la colonne 780, les couleurs sont 0,0,0 , Jack seul sait pourquoi !

Le deuxième problème concerne la ligne
Code:

r% = 255: g% = 250: b% = 180: cf = 256*256*r% + 256*g% + b%: ' couleur fond
picture 1: width 1,780: color 1, r%, g%, b%

Elle contient l'instruction color 1,r%,g%,b% et cette instruction ne marche pas. Tu peux le vérifier facilement en ajoutant, juste après cette ligne, la ligne suivante:
Code:

message str$(color_pixel_red(50,10)) + " " + str$(color_pixel_green(50,10)) + " " + str$(color_pixel_blue(50,10))

Je pense que tu seras surpris par le résultat. Il n'y a que la valeur 255 qui est bonne, les autres sont différentes. et il en est de même pour toutes les valeurs autres que 255 que tu peux mettre dans r%, g% et b%. A partir de là, il faut pallier au problème et rechercher d'abord la couleur réelle de fond pour calculer ta variable cf, sinon, ton test dans la boucle intérieure termine la recherche dès le premier pixel, et tu imprimes la variable a2$ à partir de cet endroit, donc au-delà de la picture...

Mais il y a un autre "hic". Tu semples penser que puisque la taille de ta police est de 30, chaque caractère prend 30 pixels. Or, il n'en est rien. La preuve: imprime ton string a2$ en (50,10) ce qui est censé être le début de l'impression du string a1$. Or, tu vas voir que a2$ ne s'imprime PAS directement sur le premier caractère de A1$, mais plus à droite ! D'ailleurs, avec une taille de 30 pixels par caractère, ton string a1$ ne devrait même pas tenir dans la picture 1 ! Il n'y a donc pas de correlation simple entre nombre de caractères, taille de police et nombre de pixels; c'est ce que je dis depuis un moment sur ce forum, et c'est le sens de l'utilitaire TextLen.exe (voir mon post ci-dessus) qui utilise des moyens hors Panoramic pour y arriver.

Je précise que j'utilise l'éditeur V 0.9.17 du 15 février 2010 !

Je ne veux faire de la peine à personne, mais tout n'est tout simplement pas possible avec Panoramic. Mais ce langage est suffisamment souple pour permettre de contourner le problème, soit avec des utilitaires externes genre WinPrintText ou TextLen, soit avec un petit effort comme le montre mon calendrier PopUp. Je reste conquis par ce langage et tire mon chapeau à Jack qui fait un boulot superbe.

Cordialement Klaus
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Ecriture en coleur dans une picture - Page 2 Empty
MessageSujet: Re: Ecriture en coleur dans une picture   Ecriture en coleur dans une picture - Page 2 EmptyDim 28 Fév 2010 - 22:40

Pas trop le temps ces jours-ci, mais juste pour dire que je sais bien que la taille de caractères ne permet pas de calculer leur largeur, c'est juste pour faire une estimation grossière, pour ne pas partir de trop loin pour chercher le dernier caractère.
Mais c'est bien évident que l'estimation est trop imprécise, dans une police proportionnelle, il n'y a aucune mesure entre la longueur d'une ligne de 'i' et celle d'une ligne de 'm'
Et j'avais aussi rajouté un test pour ne pas démarrer la recherche au-delà de la fenêtre du picture, mais je n'ai pas eu le temps de le rajouter.
Je vais regarder de plus près ton programme TextLen.

N'empêche que je me demande comment dans un traitement de textes on fait pour centrer un texte ou l'aligner à droite.

Tout ça n'enlève évidemment rien à Panoramic.
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12291
Age : 74
Localisation : Ile de France
Date d'inscription : 29/12/2009

Ecriture en coleur dans une picture - Page 2 Empty
MessageSujet: Re: Ecriture en coleur dans une picture   Ecriture en coleur dans une picture - Page 2 EmptyDim 28 Fév 2010 - 23:16

Bonsoir,

Je pense que dans un traitement de texte, tout comme dans un driver d'imprimante, on a accès au fichier de définition de la police utilisée pour chaque caractère, et la forme et la taille des caractères y sont définies précisément.

Donc, je suis certain qu'il y a des routines de service (des API, par exemple, ou un mécanisme similaire) qui peut extraire ces informations ce ces fichiers de police. Ceci reste bien entendu inaccessible au niveau du langage Panoramic, à moins que Jack ajoute un jour un mécanisme pour appeler des API en direct ... mais là, il y a du boulot car pour le passage de paramètres à ces fonctions, Panoramic n'a pour l'instant pas les moyens (passage par référence/valeur, variables entiers longs, adresses mémoire etc).

D'autres langages le font (Visual Basic par exemple), et c'est pourquoi je peux faire certaines choses sous forme d'utilitaire externe, mais pas de façon interne à Panoramic.

Mais que ceci ne nous empêche pas d'être créatif avec Panoramic !
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Invité
Invité




Ecriture en coleur dans une picture - Page 2 Empty
MessageSujet: Re: Ecriture en coleur dans une picture   Ecriture en coleur dans une picture - Page 2 EmptyLun 1 Mar 2010 - 0:28

Bonsoir Klaus.
J'ai repris l'exemple que j'avais mis sur ce post, et que JL35 à repris.
Il avait une chose que je n'avais pas compris dans la reprise de notre collègue, mais peut-importe.
Ce que tu disais sur ce programme m'avais un peu surpris dans le sens, je crois (j'ai lu rapidement) qu'il y avait une erreur dans la lecture je crois d'un pixel (je n'ai pas approfondi, vu que moi je ne voyais pas la même chose quand j'ai fait essais.
Voici le code, avec différent e size, je ne vois pas de problème.
La seule chose, qu'est-ce que c'est long à traiter. Si tu veux, tu regardes et tu me tapes dessus pour me faire mal.
Code:
dim a$,l%,r_font%,g_font%,b_font%,defaut%,a% ,b% ,suite%
dim r_picture%,g_picture%,b_picture% ,size%,fond%,fonte%
dim r_test%,g_test%,b_test% ,place_y%,place_x% ,reste% ,choix_couleur%

label cherche_texte, essai ,ecrit ,fin

width 0,1000 :height 0,1000

r_picture%=255 : g_picture%= 250 : b_picture%=177
place_x%  = 50 : place_y%  = 22  :rem "emplacement du texte au départ"

picture 1:width 1,980:color 1,r_picture%,g_picture%,b_picture%
          r_font%=0  : g_font%=0 : b_font%=255 : font_color 1,r_font%,g_font%,b_font%

          size%=30  : font_size 1,size%
         
memo 2  :top 2,110:height 2,100
on_click 0,essai
item_add 2, "cliquez sur la forme"

rem "attention: l'espace ne modifiant pas l'objet picture, lorsqu'on ajoute du texte
rem " après avoir retrouvé celui-ci, si on veut un espace, il faut en tenir compte"

end
' __________________________________
essai:
  on_click 0,fin
  2d_target_is 1:print_target_is 1
  print_locate place_x%,place_y%
  a$="1ère partie du texte"
  gosub ecrit
  gosub cherche_texte
  ' -------------
  font_bold 1
  r_font%=250 : g_font%=175 : b_font%=250 : font_color 1,r_font%,g_font%,b_font%
  a$="2éme partie"
  print_locate suite%+1+size%,place_y%      :rem "+size pour un espace"
  gosub ecrit
  item_add 2,"fin"
return

ecrit:
  2d_fill_color r_picture%,g_picture%,b_picture%
  print a$; :display
  defaut%=suite%+1+len(a$)*size%
return

cherche_texte:
  ' recherche gain de temps en cherchant quel rgb du picture est différent de la fonte
  choix_couleur%=0
  if r_font%<>r_picture% then choix_couleur%=1 :fonte%=r_font%
  if g_font%<>g_picture% then choix_couleur%=2 :fonte%=g_font%
  if b_font%<>b_picture% then choix_couleur%=3 :fonte%=b_font%
  rem "je n'ai pas fait de sortie si il trouve dans les 2 1er vu que de toute façon, si le 3ème
  rem "est bon ou pas bon, il ne sera pas pris"
  if choix_couleur%>0
      for b%=place_y% to place_y% + size%          :rem "chaque point sur la hauteur du texte"
        if scancode=27 then stop
        for a%=defaut% + 50 to 1 step -1          :rem "sur la ligne de loin en reculant, cherche le texte"
            if scancode=27 then stop
            select choix_couleur%
              case 1: fond%= color_pixel_red(1,a%,b%)
              case 2: fond%= color_pixel_green(1,a%,b%)
              case 3: fond%= color_pixel_blue(1,a%,b%)
            end_select
            if fonte%=fond%
              if suite%<a% then suite%=a%
              exit_for
            end_if
        next a%
      next b%
  end_if
return

fin:
terminate
Ce n'est pas une routine à inclure. De toute façon mes routines sont très rarement reprises. Juste pour avoir ton opinion. Je ne vois pas d'erreur dans Panoramic ici. Dans mon programme peut-être qu'il y a un décalage dans le choix des lignes (j'ai pas vérifié).
Aussi ceci:
gosub ecrit, ecrit le texte: gosub cherche_texte recherche le texte dans le picture. Aussi pour le dernier texte à ajouter, il ne sert à rien de faire gosub recherche_texte.
Dans le cas suivant, le texte à rajouter, si il y a un espace devant, il est entendu qu'il faut allonger la valeur x de locate, vu qu'un espace de laisse pas de trace sur un picture. Ici j'ai utilisé size% en +.
Salutation.
je viens de remarquer: pour une nouvelle ligne:suite%=0 avant l'appel recherche_texte.
Moi ce programme ne m'intéresse pas vraiment. Il est hors de mes demandes actuellement.
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12291
Age : 74
Localisation : Ile de France
Date d'inscription : 29/12/2009

Ecriture en coleur dans une picture - Page 2 Empty
MessageSujet: Re: Ecriture en coleur dans une picture   Ecriture en coleur dans une picture - Page 2 EmptyLun 1 Mar 2010 - 9:38

Bonjour, Cosmos70 !

J'ai essayé ton programme. Au premier coup d'oeil, il marche.

Comme tu l'as remarqué, le programme est lent, et quant on regarde la boucle de recherche, on comprend pourquoi. Il y a moyen de réduire ce temps, car si tu regardes bien, les caractères ont tous une largeur inférieure à 30 (la taille de la police), cela se voit à la séparation entre deux impressions que tu as dimensionnée à 30 pixels, et les autres caractères sont plus petits par comparaison. Tu pourrais donc faire un décalage de 30 (taille de la police) maxi pour la recherche, au lieu de 50. Mais cela ne met bien sûr pas le principe en cause.

Une petite remarque qui n'enlève rien à ton procédé qui est pleinement opérationnel: si tu rentres un texte dont la longueur résultante à l'affichage est proche de la bordure droite du picture 1, ton test ne marche plus car tu adresses des pixels couleurs inexistants. Tu pourrais limiter ton décalage (+50) de la façon suivante:
Code:

for a%=defaut% + 50 to 1 step -1          :rem "sur la ligne de loin en reculant, cherche le texte"
à remplacer par
Code:

debut% = defaut%+50
if debut%>979 then debut% = 979  :rem "limité à taille-1 car au bord, les couleurs sont 0,0,0 !

Ceci dit, il subit le mêle bug dans Panoramic que la version de JL35: les couleurs ne sont pas mémorisées (ou restituées par color_pixel_xxx, va savoir...) pour leur exacte valeur numérique: les couleurs autres que 0 et 255 sont modifiées légèrement, ce qui rend très difficile la comparaison des couleurs.

J'ai modifié ton programme pour en faire la démonstration. Toutes les modifications sont marquées :rem "Klaus" pour un repérage facile.
J'ai rajouté aussi des messages pour bien visualiser l'évolution des variables suite% et defaut%.
Code:

dim a$,l%,r_font%,g_font%,b_font%,defaut%,a% ,b% ,suite%
dim r_picture%,g_picture%,b_picture% ,size%,fond%,fonte%
dim r_test%,g_test%,b_test% ,place_y%,place_x% ,reste% ,choix_couleur%

dim choix_mode%                      :rem "Klaus"
label change_mode                    :rem "Klaus"

label cherche_texte, essai ,ecrit ,fin

choix_mode% = 0            :rem "Klaus"

width 0,1000 :height 0,1000

r_picture%=255 : g_picture%= 250 : b_picture%=177
place_x%  = 50 : place_y%  = 22  :rem "emplacement du texte au départ"

picture 1:width 1,980:color 1,r_picture%,g_picture%,b_picture%
          r_font%=0  : g_font%=0 : b_font%=255 : font_color 1,r_font%,g_font%,b_font%

          size%=30  : font_size 1,size%

memo 2  :top 2,110:height 2,100:width 2,300
on_click 0,essai
item_add 2,"cliquez éventuellement sur " + chr$(34) + "Version opérationnelle" + chr$(34) + " puis"
item_add 2, "cliquez sur la forme"

button 3                              :rem "Klaus"
caption 3,"Version opérationnelle"    :rem "Klaus"
top 3,250                            :rem "klaus"
width 3,300                          :rem "klaus"
on_click 3,change_mode                :rem "klaus"

rem "attention: l'espace ne modifiant pas l'objet picture, lorsqu'on ajoute du texte
rem " après avoir retrouvé celui-ci, si on veut un espace, il faut en tenir compte"

end

' __________________________________

change_mode:                                :rem "klaus"
choix_mode% = 1                              :rem "klaus"
item_add 2,"** version opérationnelle **"    : rem "Klaus"
return                                      :rem "klaus"

' __________________________________
essai:
  on_click 0,fin
  2d_target_is 1:print_target_is 1
  print_locate place_x%,place_y%
  a$="1ère partie du texte"
  gosub ecrit
  gosub cherche_texte
  ' -------------
  font_bold 1
  if choix_mode%=0                  :rem "klaus"                                  :rem "klaus"
rem la ligne suivante ne marche pas ==> bug dans Panoramic
      r_font%=250 : g_font%=175 : b_font%=250 : font_color 1,r_font%,g_font%,b_font%
  else                                                                              :rem "klaus"
rem cette ligne marche: seules les couleurs 0 et 255 sont bien prises en compte !
      r_font%=0 : g_font%=0 : b_font%=255 : font_color 1,r_font%,g_font%,b_font%    :rem "klaus"
  end_if                                                                            :rem "klaus"
  a$="2éme partie"
  print_locate suite%+1+size%,place_y%      :rem "+size pour un espace"
  gosub ecrit
  item_add 2,"2ème partie du texte"
  gosub cherche_texte
  ' -------------
  font_bold 1
  r_font%=250 : g_font%=175 : b_font%=250 : font_color 1,r_font%,g_font%,b_font%
  a$="3éme"
  print_locate suite%+1+size%,place_y%      :rem "+size pour un espace"
rem  print_locate suite%+1,place_y%              :rem "directement derrière"
  gosub ecrit
  item_add 2,"fin"
return

ecrit:
  2d_fill_color r_picture%,g_picture%,b_picture%
  print a$; :display
  defaut%=suite%+1+len(a$)*size%
  message "Suite=" + str$(suite%) + " defaut=" + str$(defaut%)    :rem "klaus"
return

cherche_texte:
  ' recherche gain de temps en cherchant quel rgb du picture est différent de la fonte
  choix_couleur%=0
  if r_font%<>r_picture% then choix_couleur%=1 :fonte%=r_font%
  if g_font%<>g_picture% then choix_couleur%=2 :fonte%=g_font%
  if b_font%<>b_picture% then choix_couleur%=3 :fonte%=b_font%
  rem "je n'ai pas fait de sortie si il trouve dans les 2 1er vu que de toute façon, si le 3ème
  rem "est bon ou pas bon, il ne sera pas pris"
  if choix_couleur%>0
      for b%=place_y% to place_y% + size%          :rem "chaque point sur la hauteur du texte"
        if scancode=27 then stop
        for a%=defaut% + 50 to 1 step -1          :rem "sur la ligne de loin en reculant, cherche le texte"
            if scancode=27 then stop
            select choix_couleur%
              case 1: fond%= color_pixel_red(1,a%,b%)
              case 2: fond%= color_pixel_green(1,a%,b%)
              case 3: fond%= color_pixel_blue(1,a%,b%)
            end_select
            if fonte%=fond%
              if suite%<a% then suite%=a%
              exit_for
            end_if
        next a%
      next b%
  end_if
  message "Suite=" + str$(suite%)              :rem "klaus"
return

fin:
terminate

Tu verras clairement les effets du bug dans Panoramic (pour lequel je n'ai d'ailleurs aucune explication).

Encore un petit mot: j'ai essayé ton programme en ajoutant un hide 1 juste après la création du picture 1, puis un show 1 juste avant la fin du sous-programme essai. Et on constate que cela marche également si picture 1 n'est pas visible à l'écran. Ceci permet de l'utiliser dans une application - seule la lenteur serait difficile à gérer.

Bonne journée à toi Klaus
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Invité
Invité




Ecriture en coleur dans une picture - Page 2 Empty
MessageSujet: Re: Ecriture en coleur dans une picture   Ecriture en coleur dans une picture - Page 2 EmptyLun 1 Mar 2010 - 12:53

Je te remercie pour ton analyse et apprécie tes commentaires.
Comme je te l'ai dit, j'ai pas d'intérêt particulier pour ce programme. J'ai eu l'idée et voulu voir si elle était bonne. De plus Jack va sortir une instruction pour donner l'information de la longueur d'un texte, donc pour moi il y a pas urgence. J'essayerai ton programme à un moment plus opportaint , vu que je suis pour quelques heures sur mon EEEPC avec une vielle version de Panoramic, et franchement en plus, le clavier n'est pas génial.
Merci à toi
@+
Revenir en haut Aller en bas
Contenu sponsorisé





Ecriture en coleur dans une picture - Page 2 Empty
MessageSujet: Re: Ecriture en coleur dans une picture   Ecriture en coleur dans une picture - Page 2 Empty

Revenir en haut Aller en bas
 
Ecriture en coleur dans une picture
Revenir en haut 
Page 2 sur 2Aller à la page : Précédent  1, 2
 Sujets similaires
-
» Ecriture dans un fichier binaire
» Ecriture dans un fichier binaire
» Lecture / écriture dans un fichier texte
» Lecture/écriture par blocs dans un fichier binaire
» Pouvoir copier un picture dans un autre

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos souhaits d'amélioration de Panoramic-
Sauter vers: