FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  
Derniers sujets
» StratégoV8 et V9
par Minibug Aujourd'hui à 1:10

» Rotation d'une image d'un angle quelconque
par JL35 Hier à 23:02

» GRID_LOAD
par Jean Claude Hier à 21:04

» HVIEWER
par Yannick Hier à 20:31

» KGF_dll - nouvelles versions
par Klaus Mar 16 Jan 2018 - 21:28

» Déformation d'image en trapèze
par mindstorm Mar 16 Jan 2018 - 21:06

» Mah-Jong américain
par Jean Claude Lun 15 Jan 2018 - 19:37

» Problème avec Deepl
par Klaus Lun 15 Jan 2018 - 0:34

» Quelques nouvelles ...
par Jean Claude Ven 12 Jan 2018 - 22:40

» Renommer les instructions ITEM_... ?
par Jicehel Ven 12 Jan 2018 - 18:56

» Ludothèque Panoramic
par jjn4 Ven 12 Jan 2018 - 18:11

» sous-programmes et fonctions
par Jack Ven 12 Jan 2018 - 17:51

» Mah-Jong français
par Jean Claude Jeu 11 Jan 2018 - 22:15

» panoramic 0.9.28
par gigi75 Ven 5 Jan 2018 - 14:06

» Un jeu qui va vous énerver!
par Jean Claude Jeu 4 Jan 2018 - 22:05

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Janvier 2018
LunMarMerJeuVenSamDim
1234567
891011121314
15161718192021
22232425262728
293031    
CalendrierCalendrier

Partagez | 
 

 Affichage d'un texte formaté dans un picture

Voir le sujet précédent Voir le sujet suivant Aller en bas 
Aller à la page : 1, 2, 3  Suivant
AuteurMessage
JL35



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

MessageSujet: Affichage d'un texte formaté dans un picture   Mer 20 Déc 2017 - 1:41

Par exemple pour afficher une aide, un mode d'emploi, ou n'importe quoi d'autre avec un affichage un peu fantaisiste, une petite sub simple:
Code:
DIM p%,txt$,x%,y%,fnt$,sz%,cr$,a$,k%,wt%,ht%
cr$ = CHR$(13)+CHR$(10)
txt$ = "Au clair de la lune"+cr$
txt$ = txt$+"Mon <B>ami</B> Pierrot"+cr$
txt$ = txt$+"<S=16>Prête-moi <I>ta plume</I>"
txt$ = txt$+cr$+"<F=Lucida Console><S=14>Pour <C=hFF0000>écrire<C=000000> un mot"
PICTURE 1: FULL_SPACE 1
PICTURE 2: HIDE 2
x% = 20: y% = 30: fnt$ = "Arial": sz% = 12
Textformat(1,txt$,x%,y%,fnt$,sz%)
END

SUB Textformat(p%,txt$,x%,y%,fnt$,sz%)
  ' Affichage du texte txt$ sur le picture p% en x%,y%,
  ' Police et taille de départ fnt$ et sz% (fnt$="" et sz%=0: fonte et taille actuels)
  ' avec enrichissements dans le corps du texte:
  ' <F=...> police, <S=...> taille,
  ' <C=hRRGGBB...> couleur RGB sous forme hexa, ou <C=xxx...> sous forme numérique
  ' <B>...</B> gras, <I>...</I> italique, <U>...</U> souligné
  ' Les dimensions résultantes du texte en pixels sont rendues dans le clipboard
  ' sous la forme d'une chaîne Ascii: "www,hhh"
  DIM_LOCAL me%,i%,j%,k%,k1%,a$,s$,a1$,c$,r%,g%,b%,hl%,xi%,yi%,w%
  me% = 800: MEMO me%: HIDE me%: WIDTH me%,1000: ITEM_ADD me%,txt$
  PRINT_TARGET_IS p%
  IF fnt$<>"" THEN FONT_NAME p%,fnt$
  IF sz% <> 0 THEN FONT_SIZE p%,sz%
  xi% = x%: yi% = y%: w% = 0
  FOR i% = 1 TO COUNT(me%)
      a$ = ITEM_READ$(me%,i%)
      k1% = 0: k% = INSTR(a$,"<"): IF k% > 0 THEN k1% = INSTR_POS(a$,">",k%+1)
      WHILE k1%>0
          PRINT_LOCATE x%,y%: a1$= LEFT$(a$,k%-1): PRINT a1$
          x% = x%+TEXT_WIDTH(a1$,p%)
          s$ = MID$(a$,k%+1,k1%-k%-1): a$ = RIGHT_POS$(a$,k1%+1)
          IF MID$(s$,2,1) = "="
              IF LEFT$(s$,2)="F=": ' Fonte
                  FONT_NAME p%,RIGHT_POS$(s$,3)
              END_IF
              IF LEFT$(s$,2)="S=": ' Taille
                  FONT_SIZE p%,VAL(RIGHT_POS$(s$,3))
              END_IF
             IF LEFT$(s$,2) = "C=": ' Couleur
                  IF UPPER$(MID$(s$,3,1)) = "H": ' couleur sous forme hexa RRGGBB
                    r%=HEX(MID$(s$,4,2)): g%=HEX(MID$(s$,6,2)): b%=HEX(MID$(s$,8,2))
                  ELSE: ' couleur sous forme numérique R*65536+G*256+B
                    j% = VAL(RIGHT_POS$(s$,3))
                    r%=INT(j%/65536): g%=BIN_AND(j%,65280)/256: b%=BIN_AND(j%,255)
                  END_IF
                  FONT_COLOR p%,r%,g%,b%
              END_IF
          ELSE
              IF s$ = "B" THEN FONT_BOLD p%
              IF s$ = "/B" THEN FONT_BOLD_OFF p%
              IF s$ = "I" THEN FONT_ITALIC p%
              IF s$ = "/I" THEN FONT_ITALIC_OFF p%
              IF s$ = "U" THEN FONT_UNDERLINE p%
              IF s$ = "/U" THEN FONT_UNDERLINE_OFF p%
          END_IF
          ' a$ = RIGHT_POS$(a$,k1%+1)
          k1%=0: k% = INSTR(a$,"<"): IF k% > 0 THEN k1% = INSTR_POS(a$,">",k%+1)
      END_WHILE
      IF a$ = "" THEN a$ = " "
      PRINT_LOCATE x%,y%: PRINT a$: j%=x%+TEXT_WIDTH(a$,p%): IF j%>w% THEN w%=j%
      hl% = TEXT_HEIGHT(a$,p%)
      x% = xi%: y% = y%+hl%
  NEXT i%
  CLIPBOARD_STRING_COPY STR$(w%-xi%)+","+STR$(y%-yi%): ' dimensions du texte
  DELETE me%
END_SUB
Le texte lui-même contient les enrichissements, fonte, taille, gras; italique, souligné, couleur, sous forme de balises incluses dans .le texte.
La forme est analogue à celle du format .rtf (wordpad), avec les balises contenues entre les caractères '<' et '>', par exemple:
<B> pour caractères gras, </B> fin de gras.

Ajout du 23/12
--------------
Grâce aux travaux de l'ami Klaus, en faisant appel aux fonctions RichEdit de KGF.dll, une sub qui permet de passer d'un texte au format .rtf (donc rédigé sous Wordpad par exemple, ce qui évite de mettre soi-même les balises et donne plus de libertés dans le formatage) au format image .bmp qu'on peut donc insérer facilement dans un Picture:
Code:
DIM frtf$,fbmp$
frtf$ = "C:\TEMP\MonDocument.rtf": ' document créé dans WordPad
fbmp$ = "Z:\Imgbmp.bmp": ' image résultante (chemin à adapter)
WIDTH 0,600: HEIGHT 0,SCREEN_Y-30: BORDER_SMALL 0: COLOR 0,164,255,255
RtfToBmp(frtf$,fbmp$)
' Affichage du résultat:
PICTURE 1: TOP 1,10: LEFT 1,10: WIDTH 1,550: HEIGHT 1,HEIGHT(0)-50
CAPTION 0,clipboard_string_paste$: ' dimensions de l'image
FILE_LOAD 1,fbmp$
END
' ==============================================================================
SUB RtfToBmp(frtf$,fbmp$)
  ' Conversion d'un texte formaté .RTF en image .BMP (ou clip si fbmp$="")
  ' Si fichier, les dimensions sont dans le clipboard, sous la forme wwwxhhh)
  ' Le Form 0 doit être assez grand pour contenir l'ensemble du texte.
  DIM_LOCAL RE%,res%,wt%,ht%,fm%,im%,mg%,mh%,x%,y%
  mg%=(WIDTH(0)-WIDTH_CLIENT(0))/2: mh%=HEIGHT(0)-HEIGHT_CLIENT(0)-mg%: ' marges Form 0
  DLL_ON "C:\PANORAMIC\KGF\KGF.dll": '  <================== À ADAPTER ==========
  RE% = DLL_CALL1("RichEditCreate",HANDLE(0))
  res% = DLL_CALL5("RichEditGeometry",RE%,0,0,600,800): ' x, y, w, h
  res% = DLL_CALL2("RichEditFileLoad",RE%,ADR(frtf$))
  ' dimensions du résultat :
  res% = DLL_CALL4("RichEditGetTextSizes",RE%,HANDLE(0),ADR(wt%),ADR(ht%))
  fm%=900
  FORM fm%: TOP fm%,0: LEFT fm%,0: WIDTH fm%,SCREEN_X: HEIGHT fm%,SCREEN_Y
    BORDER_HIDE fm%: HIDE fm%: 2D_TARGET_IS fm%: WAIT 100
  ht% = ht%-ht%/3
  x% = LEFT(0)+mg%+3: y% = TOP(0)+mh%+3: ' (bordures du RE% = 3 pixels)
  im%=fm%+1: IMAGE im%: 2D_IMAGE_COPY im%,x%,y%,x%+wt%,y%+ht%: ' capture de l'image affichée
  res% = DLL_CALL1("RichEditDelete",RE%): ' suppression du RichEdit
  DLL_OFF
  IF fbmp$ = ""
      CLIPBOARD_COPY im%
  ELSE
      FILE_SAVE im%,fbmp$: clipboard_string_copy str$(wt%)+"x"+str$(ht%)
  END_IF
  2D_TARGET_IS 0: DELETE fm%: DELETE im%
END_SUB
' ==============================================================================
NB: la conversion en bmp se fait par saisie du contenu de l'écran, donc le texte formaté doit tenir dans l'écran (Form 0 dimensionné en conséquence avant l'opération).


Dernière édition par JL35 le Sam 23 Déc 2017 - 19:16, édité 4 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jean Claude

avatar

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

MessageSujet: Re: Affichage d'un texte formaté dans un picture   Mer 20 Déc 2017 - 10:22

Bonjour à tous,

Bien vu JL35, l'idée d'utiliser des "balises" pour formater le texte, c'est excellent.
Cette SUB est bien pratique, bravo.

Il te reste à nous concocter un outil couleur qui fournisse les codes couleurs en HEXA.
(txt$ = txt$+cr$+"<F=Lucida Console><S=14>Pour <C=FF0000>écrire<C=000000> un mot")

En tous cas cheers bravo !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jicehel

avatar

Nombre de messages : 5876
Age : 45
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: Affichage d'un texte formaté dans un picture   Mer 20 Déc 2017 - 11:45

Bravo JL35, très bonne astuce
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
JL35



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

MessageSujet: Re: Affichage d'un texte formaté dans un picture   Mer 20 Déc 2017 - 16:01

Merci mes bons amis pour vos commentaires !

Jean Claude, quand même, c'est à l'usage des programmeurs et non pas du 'vulgum pecus', et n'importe quel programmeur peut exprimer une couleur en hexa.
Évidemment, si on veut vulgariser, il faudra envisager un petit module de conversion, mais ça c'est à la portée de tout le monde (programmeur ...).

Ce qui serait intéressant, peut-être, ce serait de reprendre la syntaxe exacte .rtf, de façon à rédiger le texte dans wordpad, avec ses enrichissements, de l'enregistrer en .rtf, et de le relire dans un picture avec interprétation des balises.
Ce serait bien plus facile pour la rédaction.

C'est une idée... j'ai le nom de la sub: RtftoPicture(), c'est déjà ça Very Happy

PS Je me suis un peu mélangé les pinceaux, le format cité est beaucoup plus proche du html que du rtf (balises entre < et >), et plus facile à interpréter.
Et en plus on a un outil pour afficher ça en Panoramic; HVIEWER ...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: Affichage d'un texte formaté dans un picture   Mer 20 Déc 2017 - 18:45

Citation :
Évidemment, si on veut vulgariser, il faudra envisager un petit module de conversion, mais ça c'est à la portée de tout le monde (programmeur ...).
Il est facile d'utiliser la fonction hex$ pour produire un code hexa à partir d'un entier. Et si l'on veut le code hexa sur 8 chiffres, on fait:
Code:
H$ = right$("0000000"+hex$(couleur%),8)

Et pour produire un nombre entier de couleur, à partir de R%, G% et B%:
Code:
couleur%=(B%*266+G%)*256+R%
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
JL35



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

MessageSujet: Re: Affichage d'un texte formaté dans un picture   Mer 20 Déc 2017 - 18:55

Eh bien, voilà, Jean Claude, il suffisait de demander à Klaus pour avoir la solution simplissime !

Au fait, merci Klaus.

Du coup on peut envisager la balise couleurs comme ceci:
soit <C=hRRGGBB> ... valeurs hexadécimales (préfixe h ou H)
soit <C=xxxxx..> ... valeur numérique = R*65536 + G*256 + B
Et la section prise en compte de couleur dans la sub devient:
Code:
             IF LEFT$(s$,2) = "C=": ' Couleur
                  IF UPPER$(MID$(s$,3,1)) = "H": ' couleur sous forme hexa RRGGBB
                    r%=HEX(MID$(s$,4,2)): g%=HEX(MID$(s$,6,2)): b%=HEX(MID$(s$,8,2))
                  ELSE: ' couleur sous forme numérique R*65536+G*256+B
                    j% = VAL(RIGHT_POS$(s$,3))
                    r%=INT(j%/65536): g%=BIN_AND(j%,65280)/256: b%=BIN_AND(j%,255)
                  END_IF
                  FONT_COLOR p%,r%,g%,b%
              END_IF
(j'ai modifié en conséquence là-haut)
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jean Claude

avatar

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

MessageSujet: Re: Affichage d'un texte formaté dans un picture   Mer 20 Déc 2017 - 20:19

Merci Klaus, la formule est "simple", "heu... courte" pour transformer une couleur RGB en Hexa.

Cela a fait travailler les neurones de JL35 Razz

@JL35,
j'ai voulu tester ton code rectifié (en haut), il y a un hic



J'ai aussi remarqué qu'il y a 4 variables globales qui ne servent à rien. (les 4 dernières)

A+

PS: fausse alerte ! j'ai recopier une nouvelle fois le code, ça marche ! cheers
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
jjn4

avatar

Nombre de messages : 1656
Date d'inscription : 13/09/2009

MessageSujet: +++   Mer 20 Déc 2017 - 20:49

Jolie réalisation !
Ca peut effectivement toujours servir,
en attendant le rich_text
que devait nous concocter Jack
tout en en haut de sa liste.
Mais comme il y a des complications...
Ca peut alors devenir utile.
Félicitation !
cheers alien cheers
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://jjn4.e-monsite.com
JL35



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

MessageSujet: Re: Affichage d'un texte formaté dans un picture   Mer 20 Déc 2017 - 21:26

Jean Claude,
les variables globales en trop... conséquences des essais, le haut n'est qu'un exemple d'appel de la sub. (et il vaut mieux en avoir quatre en trop que une en moins Very Happy ).
En fait ces variables correspondaient au retour de la sub:
Code:
a$ = CLIPBOARD_STRING_PASTE$: k% = INSTR(a$,",")
wt%=VAL(LEFT$(a$,k%-1)): ht%=VAL(RIGHT_POS$(a$,k%+1)): ' dimensions du texte créé
message "w="+str$(wt%)+" h="+str$(ht%)
(la sub renvoie dans le presse-papier les dimensions en pixels du texte créé, ce qui peut servir à dimensionner le picture en conséquence).

jjn4
Merci.
J'avais pensé à une sub d'édition, pour créer le texte (ou fichier texte) à afficher avec la sub ci-dessus.
Pour ça j'ai bien une sub d'édition assez complète, qui utilise les nombreuses fonctions RichEditxxx  de Kgf.dll de l'ami Klaus, qui sont très puissantes, malheureusement ça produit un texte (fichier) au format rtf, qui est trop différent de ce que j'ai fait là-haut.
Ça aurait été plus intéressant au format html, qui est beaucoup plus simple à analyser.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: Affichage d'un texte formaté dans un picture   Mer 20 Déc 2017 - 23:52

Citation :
Pour ça j'ai bien une sub d'édition assez complète, qui utilise les nombreuses fonctions RichEditxxx  de Kgf.dll de l'ami Klaus, qui sont très puissantes, malheureusement ça produit un texte (fichier) au format rtf, qui est trop différent de ce que j'ai fait là-haut.
A titre d'essai, j'ai déposé une version de KGF.dll sur le WebDav, avec une nouvelle fonction:
Code:
res% = dll_call2("RichEditHtmlFileSave",RE%,adr(html$))
avec html$ contenant le nom du fichier HTML en sortie.

Pourrais-tu essayer stp et me dire ce que tu en penses ?

EDIT

23h02: version corrigée et testée. Pour moi, ça marche.
Essaie avec cette démo:
Code:
' test_RichEditHtmlFileSave.bas

label close0
dim res%, RTF$, HTML$, RE%


on_close 0,close0
dll_on "KGF.dll"

RE% = dll_call1("RichEditCreate",handle(0))
res% = dll_call5("RichEditGeometry",RE%,10,40,400,300)

RTF$ = "MonDocument.rtf"
res% = dll_call2("RichEditFileLoad",RE%,adr(RTF$))

HTML$ = "MonDocument.html"
res% = dll_call2("RichEditHtmlFileSave",RE%,adr(HTML$))
 
end

close0:
  res% = dll_call1("RichEditDelete",RE%)
  return
Ca marche avec le choix des polices, de la couleur, attributs comme gras, italique et soiligné...
Je n'ai pas tout testé, mais ça semble pas mal - à toi de jouer !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
JL35



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

MessageSujet: Re: Affichage d'un texte formaté dans un picture   Jeu 21 Déc 2017 - 1:07

Super Klaus, je vais essayer ça avec grand plaisir !
Peut-être pas ce soir, mais sûr, ça m'intéresse beaucoup !
Merci à toi.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
JL35



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

MessageSujet: Re: Affichage d'un texte formaté dans un picture   Jeu 21 Déc 2017 - 1:24

J'ai bien téléchargé une version KGF.zip (qui contient KGF.dll du 20/12 à 21h18, taille 1485k) mais j'ai une erreur ligne 17 de ta démo, manifestement fonction "RichEditHtmlFileSave" non reconnue... ça ne doit pas être la bonne version.
Sur le webdav (CloudMe) j'ai seulement KGF_wizard., pas de KGF.zip..

-> Not correct arithmetic expression : Error in function. Line : 17

et en attendant... bonne nuit !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: Affichage d'un texte formaté dans un picture   Jeu 21 Déc 2017 - 2:10

La DLL en question est sur le WebDav, dossier DLLs\ et s'appelle KGF.dll. Je viens de la télécharger à partir de mon WebDav et essayé - ça marche. Bon, je vais la mettre également sur mes sites... - voilà qui est fait. Et j'utilise le fichier RTF suivant:
Spoiler:
 
ce qui donne le résultat HTML suivant:
Citation :
<FONT size=3>
<P dir=ltr>Ceci est un texte </FONT><FONT size=3 face="Arial Black"><FONT size=3 face="Arial Black">en format Arial Black</P></FONT></FONT><FONT size=3 face=Arial><FONT size=3 face=Arial>
<P dir=ltr>Arial en </FONT></FONT><FONT color=#0070c0 size=3 face=Arial><FONT color=#0070c0 size=3 face=Arial><FONT color=#0070c0 size=3 face=Arial>Bleu</FONT></FONT></FONT><FONT size=3 face=Arial><FONT size=3 face=Arial> et </FONT></FONT><FONT color=#ff0000 size=3 face=Arial><FONT color=#ff0000 size=3 face=Arial><FONT color=#ff0000 size=3 face=Arial>rouge.</P></FONT></FONT></FONT><FONT size=3 face=Arial><FONT size=3 face=Arial>
<P dir=ltr>Arial en <B>Gras</B> et <I><U>Italique Souligné</I></U>.</P>
<P dir=ltr> </P></FONT></FONT>
et à l'écran, dans ce programme de démo:

et, en double-cliquant sur ce fichier HTML, dans Firefox, j'ai:

Ca semble bon, non ? Je ne suis pas mécontent de cette petite avancée, je dois dire...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
JL35



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

MessageSujet: Re: Affichage d'un texte formaté dans un picture   Jeu 21 Déc 2017 - 13:25

Excuse-moi Klaus, je me suis débrouillé comme un manche, je cherchais KGF.zip sur le webdav alors qu'il fallait aller dans DLLs...
Bon, j'ai récupéré la bonne version, lancé rapidement ton exemple, et ça a l'air très satisfaisant !
Je regarderai de plus près cet après-midi, mais, a priori, un grand merci Klaus ! je sens que je vais bien m'amuser.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: Affichage d'un texte formaté dans un picture   Jeu 21 Déc 2017 - 13:33

Very Happy Very Happy Very Happy
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
JL35



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

MessageSujet: Re: Affichage d'un texte formaté dans un picture   Jeu 21 Déc 2017 - 14:37

Ce qui est étonnant aussi, c'est la compacité du format html par rapport au format rtf
fichier html 1k, fichier rtf 33k
pour un résultat d'affichage identique ! et plus universel pour le html.
Et qui pour nous s'affiche parfaitement dans un Hviewer
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
JL35



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

MessageSujet: Re: Affichage d'un texte formaté dans un picture   Jeu 21 Déc 2017 - 15:47

Finalement, c'est plus simple, grâce à KGF.dll.

Il n'y a plus à interpréter les balises, c'est l'objet Hviewer qui s'en charge, et ça ouvre toutes les possibilités.
Le texte d'origine est créé dans WordPad avec tous ses enrichissements et sauvegardé au format .RTF.
C'est ce fichier rtf qui est donné en paramètre à la sub, ainsi qu'un numéro de Hviewer préalablement déclaré et aux dimensions adéquates pour contenir le texte.
Dans la sub, grâce aux fonctions RichEdit de KGF.dll, ce fichier est converti au format html, lequel est affiché dans le Hviewer.

Le seul problème (inconvénient ?) c'est qu'il faut préalablement dimensionner le Hviewer pour qu'il contienne le texte formaté (dont on ne peut connaître à l'avance les dimensions), il faudra le faire par tâtonnements successifs.
Code:
' Affichage dans un HVIEWER d'un texte formaté au format .RTF (Wordpad)
DIM f$,wh%,hh%
COLOR 0,180,255,255
f$ = "C:\TEMP\MonDocument.rtf": ' document créé dans WordPad
wh% = 340: hh% = 200: ' Dimensions du HVIEWER en fonction du texte à afficher
HVIEWER 10: TOP 10,20: LEFT 10,50: WIDTH 10,wh% : HEIGHT 10,hh%
RtfToScreen(f$,10)
END
' ==============================================================================
SUB RtfToScreen(f$,h%)
  ' Affichage d'un fichier f$ .rtf (origine wordpad) dans un Hviewer h%
  DIM_LOCAL RE%,res%,fhtm$,wh%,hh%
  wh% = WIDTH(h%): hh% = HEIGHT(h%)
  fhtm$ = "C:\TEMP\Mondoc.htm"
  DLL_ON "C:\PANORAMIC\KGF\KGF.dll": '  <================== À AJUSTER ==========
    RE% = dll_call1("RichEditCreate",handle(0))
    res% = dll_call5("RichEditGeometry",RE%,0,1200,wh%,hh%)
    res% = dll_call2("RichEditFileLoad",RE%,adr(f$))
    res% = dll_call2("RichEditHtmlFileSave",RE%,adr(fhtm$))
    res% = dll_call1("RichEditDelete",RE%)
  DLL_OFF
  FILE_LOAD h%,fhtm$: FILE_DELETE fhtm$
END_SUB
' ==============================================================================
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jicehel

avatar

Nombre de messages : 5876
Age : 45
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: Affichage d'un texte formaté dans un picture   Jeu 21 Déc 2017 - 16:50

Oui du moins jusqu'à ce que Klaus ait une idée et nous offre une fonction qui nous donne directement les bonnes dimensions Wink Ne sous-estime pas la capacité d'adaptation phénoménale de notre Klaus Wink
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: Affichage d'un texte formaté dans un picture   Jeu 21 Déc 2017 - 17:00

Ben... j'allais justement proposer de recharger KGF.dll, et d'essayer le code suivant:
Code:
dim Largeur%, Hauteur%
...
  Largeur% = dll_call3("RichEditFunction",RE%,14,adr(Hauteur%))
  message "Largeur="+str$(Largeur%)+"  Hauteur="+str$(Hauteur%)

Cela te donne la largeur globale et la hauteur globale de tout le texte en pixels dans le RichEdit, compte tenu des propriétés de police, taille, attibuts etc. Tu pourras utiliser cela pour dimensionner, au moins pour la largeur de ton HVIEWER. Pour la hauteur, ça dépendra du nombre de lignes et de la place disponible à l'écran...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
JL35



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

MessageSujet: Re: Affichage d'un texte formaté dans un picture   Jeu 21 Déc 2017 - 17:07

T'es gonflé Jicehel, je n'osais pas le demander Very Happy
Je regardais s'il n'y avait pas moyen de convertir le contenu du Hviewer en image pour pouvoir le réintégrer facilement dans un picture, et même le redimensionner, mais je n'ai rien trouvé.
On peut aussi intégrer un script au début du html pour définir les dimensions d'affichage, mais ça adapte en ajoutant des sauts de lignes, etc, ça ne change pas la dimension des caractères, donc guère intéressant.

Un truc que je trouve curieux, c'est que le fichier html produit par la fonction RichEditHtmlFileSave ne contient pas les balises d'encadrement classiques: <HTML> <BODY> ... </BODY> </HTML>, et pourtant ça marche, Hviewer l'affiche sans problème...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
JL35



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

MessageSujet: Re: Affichage d'un texte formaté dans un picture   Jeu 21 Déc 2017 - 17:07

Mince alors, Klaus tu es encore allé plus vite que ton ombre !

C'est super, exactement ce que je cherchais, je regarde ça tout de suite !

RÉSULTAT: Avec l'exemple que tu as donné plus haut, ça me donne un résultat de 112 pixels x 65 pixels, manifestement en-dessous de la réalité (qui est d'environ 320 x 130 pixels)


Dernière édition par JL35 le Jeu 21 Déc 2017 - 17:17, édité 1 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: Affichage d'un texte formaté dans un picture   Jeu 21 Déc 2017 - 17:10

Citation :
Un truc que je trouve curieux, c'est que le fichier html produit par la fonction RichEditHtmlFileSave ne contient pas les balises d'encadrement classiques: <HTML> <BODY> ... </BODY> </HTML>, et pourtant ça marche, Hviewer l'affiche sans problème...
Oui, et les browsers également. Suffit de double-cliquer sur le fichier...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
JL35



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

MessageSujet: Re: Affichage d'un texte formaté dans un picture   Jeu 21 Déc 2017 - 17:24

Je répète mon edit ci-dessus:
Résultat du RichEditFunction: Avec l'exemple que tu as donné plus haut, ça me donne un résultat de 112 pixels x 65 pixels, manifestement en-dessous de la réalité (qui est d'environ 320 x 150 pixels)
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: Affichage d'un texte formaté dans un picture   Jeu 21 Déc 2017 - 20:53

Bon, ça a été un peu plus long. Selon l'aveu même de MicroSoft, la doc concernant le RichEdit contient quelques erreurs... Mais je pense avoir trouvé. Recharge la DLL et réessaie, stp.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
JL35



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

MessageSujet: Re: Affichage d'un texte formaté dans un picture   Jeu 21 Déc 2017 - 21:19

J'ai rechargé la dll sur ton webdav... ça me donne toujours 112 x 78 pixels...

Pour voir, dans le fichier rtf j'ai allongé la 1ère ligne et ajouté une ligne à la fin.
J'ai toujours 112 pixels en largeur (inchangée), mais 104 en hauteur, qui elle a bien varié proportionnellement au nombre de lignes.

Ma sub, à tout hasard:
Code:
SUB RtfToScreen(frtf$,h%)
  ' Affichage dans le Hviewer h% d'un fichier texte formaté f$ (.rtf)
  ' (créé dans Wordpad)
  DIM_LOCAL RE%,res%,fhtm$,wt%,ht%
  fhtm$ = "C:\TEMP\Mondoc.htm": ' fichier provisoire résultat format htm
  DLL_ON "C:\PANORAMIC\KGF\KGF.dll": '  <================== À AJUSTER ==========
    RE% = DLL_CALL1("RichEditCreate",handle(0))
    res% = DLL_CALL5("RichEditGeometry",RE%,0,1200,600,600): ' créé hors écran
    res% = DLL_CALL2("RichEditFileLoad",RE%,adr(frtf$))
    res% = DLL_CALL2("RichEditHtmlFileSave",RE%,adr(fhtm$)): ' conversion rtf -> htm
    wt% = DLL_CALL3("RichEditFunction",RE%,14,ADR(ht%)): ' dimensions du résultat
    res% = DLL_CALL1("RichEditDelete",RE%)
  DLL_OFF
  message str$(wt%)+" x "+str$(ht%)
  WIDTH h%,wt%: HEIGHT h%,ht%
  FILE_LOAD h%,fhtm$: FILE_DELETE fhtm$
END_SUB


Dernière édition par JL35 le Jeu 21 Déc 2017 - 21:34, édité 2 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: Affichage d'un texte formaté dans un picture   

Revenir en haut Aller en bas
 
Affichage d'un texte formaté dans un picture
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 3Aller à la page : 1, 2, 3  Suivant
 Sujets similaires
-
» Boîte de saisie de texte formaté
» [Résolu] Texte impossible dans Outlook Express
» pas affichage carte et texte en anglais
» Texte défilant dans une fenètre
» Affichage sous IE des smileys et gif animés

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos sources, vos utilitaires à partager-
Sauter vers: