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
» Mah-Jong américain
par Jean Claude Hier à 19:37

» StratégoV8 et V9
par Jean Claude Hier à 13:18

» Problème avec Deepl
par Klaus Hier à 0:34

» Déformation d'image en trapèze
par Klaus Dim 14 Jan 2018 - 16:22

» 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

» KGF_dll - nouvelles versions
par Minibug Ven 12 Jan 2018 - 0:21

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

» HVIEWER
par Klaus Mer 10 Jan 2018 - 2:06

» 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

» Bonne fêtes de fin d'année ! Meilleurs Vœux 2018 !
par Jicehel Jeu 4 Jan 2018 - 17:28

» Mah-Jong international
par jjn4 Jeu 4 Jan 2018 - 16:55

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 : Précédent  1, 2, 3  Suivant
AuteurMessage
Klaus

avatar

Nombre de messages : 10411
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 - 21:27

Oups... un post pour rien. Je retourne au boulot...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Klaus

avatar

Nombre de messages : 10411
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 - 23:18

Je progresse... J'ai maintenant la bonne largeur. La hauteur pose encore problème, du fait de l'interligne.

En réalité, cela vient du fait que, selon l'aveu même de MicroSoft, la documentation du RichEdit contient des erreurs non corrigées. Et évidemment, la documentation du composant TRichEdit de Delphi souffre des mêmes problèmes. Alors, il faut aller à la pêche, et le poisson est rare. Mais ça vient...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
JL35



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

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

Merci en tout cas Klaus pour le mal que tu te donnes... bon, je sais bien que ça n'est pas très douloureux pour toi, mais je suis bien content que ce soit toi qui t'y plonges, ça ne doit pas être évident.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: Affichage d'un texte formaté dans un picture   Ven 22 Déc 2017 - 0:14

J'ai fait une correction, concernant la largeur du texte. Recharge la DLL, et essaie ceci:
Code:
  Largeur% = dll_call3("RichEditFunction",RE%,14,0)
  message "Largeur="+str$(Largeur%)
La largeur me semble pas mal. La hauteur est inutilisable pour le moment, mais je cherche.

Sache que, même si une ligne ne tient pas dans la fenêtre et le reste est renvoyé sur la ligne suivante, elle continue à constituer une seule ligne pour le RichEdit. Et donc, la largeur dépasse la largeur du RichEdit dans ce cas, ce qui est normal. Par contre, le calcul de la hauteur s'en trouve totalement perturbé. Donc, pour le moment, on n'utilise que la largeur retournée.

Tu me donnes des nouvelles ?
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
JL35



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

MessageSujet: Re: Affichage d'un texte formaté dans un picture   Ven 22 Déc 2017 - 0:26

Euh...
Toujours avec ton fichier rtf exemple, ça me donne 221 x 64 comme dimensions, c'est encore trop peu...
Grosso modo je dois multiplier la largeur rendue par 1.5, et la hauteur par 2.5

J'ai d'abord un affichage de  '5   23' dans une fenêtre message, ça doit être un affichage de contrôle à toi ?
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: Affichage d'un texte formaté dans un picture   Ven 22 Déc 2017 - 1:39

Citation :
J'ai d'abord un affichage de '5 23' dans une fenêtre message, ça doit être un affichage de contrôle à toi ?
Oui. Exact. Cela donne quelques paramètres sur les détails du format global du RichEdit.

Citation :
Toujours avec ton fichier rtf exemple, ça me donne 221 x 64 comme dimensions
Oui. Chez moi aussi. Et par rapport aux dimensions du RichEdit, ça semble correct. Pour la largeur, au moins, car comme je te l'ai dit, ne tiens pas compte de la hauteur qui est encore dans les choux.

Mais fais l'essai: remplis une des lignes d'un caractère quelconque qui soit assez petit, un i minuscule ou in point, par exemple. Va jusqu'au bout de la ligne et affiche le résultat. Tu trouveras une largeur très peu inférieure à celle du RichEdit. Ensuite, rallonge cette ligne plus ou moins. Bien sûr, les caractères rajoutés appraîtront physiquement sur la ligne suivante. Ils font néanmoins partie de la ligne au-dessus, tant que tu n'as pas saisi de retour chariot. Et la mesure de la dimension donne bien des valeurs de la largeur dépassant la largeur du RichEdit. On retourne donc bien la largeur que la ligne prendrait si elle pouvait se développer entièrement à l'horizontale.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
JL35



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

MessageSujet: Re: Affichage d'un texte formaté dans un picture   Ven 22 Déc 2017 - 2:09

Je ne comprends quand même pas très bien pour les dimensions.
Si j'affiche le résultat à l'écran (dans le Hviewer), je mesure comme dimensions environ 330 x 160 pixels, et non 221 x 64... ?

En tout cas merci, mais je verrai la suite demain, là maintenant c'est Sleep
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: Affichage d'un texte formaté dans un picture   Ven 22 Déc 2017 - 4:11

J'ai remis une version en ligne sans se message technique, et avec de légères modifications. Surtout, appelle la fonction comme ceci, maintenant:
Code:
 Largeur% = dll_call3("RichEditFunction",RE%,14,handle(99))
  message "Largeur="+str$(Largeur%)+"  Hauteur="+str$(Hauteur%)
avec 99 étant le numéro du HVIEWER (à adapter à ta situation, bien sûr).

Mais he crois que le problème vient an fait du HVIEWER. Lance l'affichage dans ma démo, dans ton programme en version HTML, et dans ton browser (Firefox chez moi), en double-cliquant simplement sur le fichier HTML. Et laà tu constates que les dimensions sont quasiment identiques entre le RichEdit et l'affichage dans le browser, mais l'affichage du HViewer est nettement plus grand. Pourquoi ? Ca ne peut venir que du HViewer, puisque RichEdit et le browser affichent les mêmes dimensions.

La preuve:

Dans ma capture, tu vois en haut l'affichage dans Firefox, et en bas mon programme de démo dans lequel j'ai ajouté un HVIEWER de 400x300 pixels à droite, à côté du RICHEDIT de la même dimension. Et on voit le problème du HVIEWER à l'oeil nu.

Bon, je continue de chercher, mais c'est compliqué.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
JL35



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

MessageSujet: Re: Affichage d'un texte formaté dans un picture   Ven 22 Déc 2017 - 14:49

Effectivement, j'avais déjà constaté que les dimensions du Hviewer étaient un peu aléatoires et qu'il faut parfois les réajuster.
C'est un peu curieux (ton exemple) que l'affichage dans le Hviewer soit un peu dilaté...

Ceci dit j'ai essayé avec la dernière version de la dll, mais j'obtiens toujours le même résultat en largeur: 221 pixels, et la hauteur 0.

Et si j'applique la nouvelle formulation que tu préconises du RichEditFunction
Code:
wt% = DLL_CALL3("RichEditFunction",RE%,14,HANDLE(h%))
je récupère la largeur (221, pareil), mais du coup pour la hauteur, comment fait-on ???

Ne te casse pas trop la tête quand même avec ça, ce n'est pas vital et on peut y arriver avec des tâtonnements (bien sûr ce n'est pas très satisfaisant pour un programmeur...)

PS
Sinon, peut-être une solution ici (en Delphi):
https://www.developpez.net/forums/d95475/environnements-developpement/delphi/langage/trichedit-taille-texte-hauteur-pixel/
mais je n'ai pas les moyens (intellectuels) de juger de sa pertinence...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
JL35



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

MessageSujet: Re: Affichage d'un texte formaté dans un picture   Ven 22 Déc 2017 - 16:43

Une question Klaus.
Est-ce que le code ci-dessous n'est pas censé afficher le fichier donné dans la fenêtre RichEdit créée ?
Code:
DIM frtf$,RE%,res%
frtf$ = "C:\TEMP\MonDocument.rtf": ' document créé dans WordPad
WIDTH 0,500: HEIGHT 0,300: BORDER_SMALL 0: COLOR 0,180,255,255
DLL_ON "C:\PANORAMIC\KGF\KGF.dll": '  <================== À AJUSTER ==========
    RE% = DLL_CALL1("RichEditCreate",HANDLE(0))
    res% = DLL_CALL5("RichEditGeometry",RE%,20,20,400,200)
    res% = DLL_CALL2("RichEditFileLoad",RE%,ADR(frtf$))
DLL_OFF
END
J'ai bien une fenêtre RichEdit créée, aux dimensions données, mais qui reste vide malgré le FileLoad... scratch
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: Affichage d'un texte formaté dans un picture   Ven 22 Déc 2017 - 18:14

As-tu testé le code retour des fonctions ?

Quant au lien, je vais regarder cela. Et pour la hauteur, j'avais dit que ça ne marche pas encore...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
JL35



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

MessageSujet: Re: Affichage d'un texte formaté dans un picture   Ven 22 Déc 2017 - 18:36

Concernant ma question d'affichage, il me semblait avoir rectifié mais ça n'est pas passé.
Le problème c'est que quand je fais DLL_OFF, ça efface le contenu du RichEdit, il suffit de différer le DLL_OFF et ça marche.

Mon but ultime en fait c'est de convertir le contenu du fichier Rtf en une image (bmp) affichable sur un Picture.
Ce que je fais c'est:
- Créer un RichEdit sur Form 0 et y afficher le fichier Rtf, grâce à KGF.dll
- Capturer la zone intéressante du RichEdit dans une image bmp
- Supprimer le RichEdit
Donc, plus besoin de passer par la phase html et Hviewer.
Quelque chose comme ça:
Code:
DIM frtf$,fbmp$
frtf$ = "C:\TEMP\MonDocument.rtf": ' document créé dans WordPad
fbmp$ = "Z:\Imgbmp.bmp": ' image résultante
WIDTH 0,600: HEIGHT 0,400: BORDER_SMALL 0: COLOR 0,180,255,255
RtfToBmp(frtf$,fbmp$)
' Affichage du résultat :
PICTURE 1: TOP 1,100: LEFT 1,20: WIDTH 1,400: HEIGHT 1,200: FILE_LOAD 1,fbmp$
END
' ==============================================================================
SUB RtfToBmp(frtf$,fbmp$)
  ' Conversion d'un texte formaté format .RTF en image .BMP (ou clipboard si fbmp$ = "")
  DIM_LOCAL RE%,res%,wt%,ht%,hv%,fm%,im%,mg%,mh%,x%,y%
  DLL_ON "C:\PANORAMIC\KGF\KGF.dll": '  <================== À AJUSTER ==========
  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$))
  wt% = DLL_CALL3("RichEditFunction",RE%,14,ADR(ht%)): ' dimensions du résultat
  wt% = wt%*1.3: ht% = ht%*2.5: if ht% = 0 then ht% = 120
  mg% = (WIDTH(0)-WIDTH_CLIENT(0))/2: mh% = HEIGHT(0)-HEIGHT_CLIENT(0)-mg%
  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
  x% = LEFT(0)+LEFT(hv%)+mg%+3: y% = TOP(0)+TOP(hv%)+mh%+3: ' (bordures du RE% = 3)
  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$
  END_IF
  2D_TARGET_IS 0: DELETE fm%: DELETE im%
END_SUB
' ==============================================================================
Ça marche en forçant les dimensions, comme ci-dessus, mais il faudrait connaître les dimensions en pixels du texte affiché...
(ci-dessus je n'ai pas rectifié l'appel à RichEditFunction pour les dimensions, je ne sais plus quoi mettre comme Handle...)
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: Affichage d'un texte formaté dans un picture   Sam 23 Déc 2017 - 0:25

J'ai complètement réécrit la partie de calcul de la largeur globale du texte d'un RichEdit. Même le lien dans ton post n'a pas suffi pour y arriver, car il supposait disposer du Canvas de l'objet destinataire. Et je n'avais aucun moyen de le récupérer à partir du handle du HVIEWER.

J'ai donc eu recours à des fonctions que j'avais écrites fin mars 2017 permettant de récupérer le canvas d'un objet Panoramic et d'y écrire ou dessiner. Et là, ça marche !

Pour la largeur globale, je parcours ligne par ligne, en additionnant la largeur de chaque caractère, en tenant compte de sa police, couleur, taille et attributs. Je suis bien obligé de le faire caractère par caractère, puisque ça peut changer n'importe où dans la ligne. Et je mémorise toujours la valeur maximale entre le dernier maximum de longueur et la longueur de la ligne actuelle. Si bien qu'à la fin, j'ai une longueur de ligne parfaitement adaptée à l'objet ciblé (ici, le HVIEWER). Pour la hauteur, par contre, il faudra attendre encore un peu, car je n'ai pas encore maîtrisé la gestion de l'interligne.

Techniquement, j'ai supprimé l'essai avec le code 14 de RichEditFunction et j'ai créé une nouvelle fonction:
Code:
  res% = dll_call4("RichEditGetTextSizes",RE%,handle(dest%),adr(Largeur%),adr(Hauteur%))
dest% est le numéro Panoramic d'un objet cible (ici, le HVIEWER).

Voici le code avec lequel j'ai testé:
Code:
' test_RichEditBmpLoad.bas

label close0, charger, URLon, URLoff, dimensions
dim Largeur%, Hauteur%
dim res%, RE%, WB%, f$, RTF$, HTML$, URL$


on_close 0,close0
full_space 0
dll_on "KGF.dll"

open_dialog 1 : filter 1,"Images (BMP,JPG,PNG,GIF)|*.bmp;*.jpg;*.png;*.gif"

alpha 21 : top 21,40 : left 21,10 : caption 21,"RichEdit"
alpha 22 : top 22,40 : left 22,420 : caption 22,"WebBrowser"
alpha 23 : top 23,40 : left 23,830 : caption 23,"HVIEWER"
RE% = dll_call1("RichEditCreate",handle(0))
res% = dll_call5("RichEditGeometry",RE%,10,60,400,300)

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

button 10 : caption 10,"Image" : on_click 10,charger
button 11 : left 11,width(10) : caption 11,"URL on" : on_click 11,URLon
button 12 : left 12,left(11)+width(11) : caption 12,"URL off" : on_click 12,URLoff
button 13 : left 13,left(12)+width(12) : caption 13,"Dimensions" : on_click 13,dimensions

WB% = dll_call1("WB_Create",handle(0))
res% = dll_call5("WB_Locate",WB%,420,60,400,300)
URL$ = "file:///C:\Users\klausgunther\Documents\Mes projets\Mes projets Delphi\KGF\MonDocument.html"
res% = dll_call2("WB_Url",WB%,adr(url$))

hviewer 99 : top 99,60 : left 99,830 : width 99,400 : height 99,300

HTML$ = "MonDocument.html"
file_load 99,HTML$   

end

close0:
  res% = dll_call1("RichEditDelete",RE%)
  return

charger:
  f$ = file_name$(1)
  if f$="_" then return
  res% = dll_call2("RichEditBmpLoad",RE%,adr(f$))

'  HTML$ = "MonDocument.html"
'  res% = dll_call2("RichEditHtmlFileSave",RE%,adr(HTML$))
  return
 
URLon:
  res% = dll_call3("RichEditFunction",RE%,15,1)
  return
 
URLoff:
  res% = dll_call3("RichEditFunction",RE%,15,0)
  return
 
dimensions:
  res% = dll_call4("RichEditGetTextSizes",RE%,handle(99),adr(Largeur%),adr(Hauteur%))
  message "Résultat reçu: adr(Largeur%)="+str$(adr(Largeur%))+"  Largeur="+str$(Largeur%)+"  Hauteur="+str$(Hauteur%)
  return

Il peut encore y avoir des anomalies, mais la largeur est plutôt bonne, maintenant. Mais je continue, surtout pour la hauteur...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
JL35



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

MessageSujet: Re: Affichage d'un texte formaté dans un picture   Sam 23 Déc 2017 - 0:31

Super Klaus, merci pour le boulot, je vais voir ça tout de suite...
N'empêche, mesurer les lignes caractère par caractère, ça m'était venu à l'idée mais ça me paraissait insurmontable...

PS
Effectivement, pour la largeur ça semble correct maintenant ! beau (et gros) boulot !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: Affichage d'un texte formaté dans un picture   Sam 23 Déc 2017 - 0:38

Oui, c'était compliqué, d'autant qu'il fallait changer la police, la taille et les attributs pour chaque caractère, et donc déjà récupérer ces informations dans le RichEdit pour pouvoir les appliquer...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
JL35



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

MessageSujet: Re: Affichage d'un texte formaté dans un picture   Sam 23 Déc 2017 - 1:02

Heureusement qu'on n'est plus en basic d'autrefois, imagine le temps que ça prendrait ! c'est même étonnant que ça aille si vite, même si le texte est assez court.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: Affichage d'un texte formaté dans un picture   Sam 23 Déc 2017 - 1:06

N'oublie pas que le gros du travail se fait en Delphi, ce qui revient à dire que c'est pratiquement en C !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
JL35



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

MessageSujet: Re: Affichage d'un texte formaté dans un picture   Sam 23 Déc 2017 - 1:13

Je ne connais pas du tout le Delphi, ni d'ailleurs le C, mais ce n'est quand même pas de l'assembleur... enfin, ce n'est plus du basic non plus.

Eh bien, bonne nuit Klaus, toi tu as plutôt l'air du genre couche-tard si je regarde les heures de tes interventions Wink
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: Affichage d'un texte formaté dans un picture   Sam 23 Déc 2017 - 4:27

Oui, je travaille tard - c'est le moment dans la journée où tout est calme, il n'y a pas de téléphone...

J'ai mis une nouvelle version en ligne qui, je pense, retourne la hauteur assez correctement. Même si tout ne tiient pas dans la fenêtre, et si donc une partie même importante dépasse, la hauteur retournée donne la hauteur totale, PAR RAPPORT AU RICHEDIT !

Je continuerai à affiner le code.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
JL35



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

MessageSujet: Re: Affichage d'un texte formaté dans un picture   Sam 23 Déc 2017 - 14:59

Je viens d'essayer, ça me retourne comme dimensions 314 x 104, un peu juste en hauteur (un peu comme si le texte était en simple interligne, alors qu'il est en double).

C'est un peu hs, mais à propos du double interligne: Wordpad s'ouvre d'office en double interligne ou presque:
et il faut chaque fois (pour moi en tout cas) décocher en bas et cocher 1.0 pour avoir un interligne normal...

PS
Si je ne passe pas par l'étape HVIEWER (mon objectif final: obtenir une image bmp du texte rtf, pour pouvoir l'afficher dans un picture), le résultat actuel est tout à fait satisfaisant !
Mon exemple:
Code:
DIM frtf$,fbmp$
frtf$ = "C:\TEMP\MonDocument.rtf": ' document créé dans WordPad
fbmp$ = "C:\TEMP\Imgbmp.bmp": ' image résultante
WIDTH 0,600: HEIGHT 0,400: BORDER_SMALL 0: COLOR 0,180,255,255
RtfToBmp(frtf$,fbmp$)
' Affichage du résultat :
PICTURE 1: TOP 1,100: LEFT 1,20: WIDTH 1,400: HEIGHT 1,200
FILE_LOAD 1,fbmp$
END
' ==============================================================================
SUB RtfToBmp(frtf$,fbmp$)
  ' Conversion d'un texte formaté format .RTF en image .BMP
  DIM_LOCAL RE%,res%,wt%,ht%,hv%,fm%,im%,mg%,mh%,x%,y%
  DLL_ON "C:\PANORAMIC\KGF\KGF.dll": '  <================== À AJUSTER ==========
  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%))
  mg% = (WIDTH(0)-WIDTH_CLIENT(0))/2: mh% = HEIGHT(0)-HEIGHT_CLIENT(0)-mg%
  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
  x% = LEFT(0)+LEFT(hv%)+mg%+3: y% = TOP(0)+TOP(hv%)+mh%+3: ' (bordures du RE% = 3)
  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$
  END_IF
  2D_TARGET_IS 0: DELETE fm%: DELETE im%
  caption 0,str$(wt%)+" x "+str$(ht%): ' pour voir...
END_SUB
' ==============================================================================


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

avatar

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

MessageSujet: Re: Affichage d'un texte formaté dans un picture   Sam 23 Déc 2017 - 15:19

Citation :
la dernière que tu avais suggéré: wt% = DLL_CALL3("RichEditFunction",RE%,14,HANDLE(hviewer%)) ne donnant que la largeur, correct ?
Non, pas vraiment. J'ai retiré cette option 14, et entretemps, j'ai remis une nouvelle version en ligne, avec l'option 14 étant la gestion d'une série d'attributs particuliers du RichEdit: visible ou pas, actif ou pas, read only ou pas, word wrap ou pas, ainsi que la présence de scrollbars horizontales et/ou verticales.

Chez moi, avec le texte transformé en taille 12 de la police (avant, c'était 11...), ça donne ceci:


Et en insérant quelques lignes vides avant de cliquer sur "Dimension":

Ce qui paraît assez correct pour un RichEdit de 300 pixels de haut, sachant que l'interligne après la dernière ligne de texte est compris dans le calcul de la hauteur.

Pour moi, ça semble bon. Pour vérifier, je te mets ici le RTF que j'utilise actuellement:
Spoiler:
 

ainsi que le HTML:
Spoiler:
 

La mesure de la hauteur se fait sur le RichEdit d'origine et elle est exacte. La mesure de la largeur se fat sur le canvas de destination, et je suis en train de le modifier de sorte à ce que ça se fasse également sur le RichEdit d'origine.


Dernière édition par Klaus le Sam 23 Déc 2017 - 15:30, édité 1 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
JL35



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

MessageSujet: Re: Affichage d'un texte formaté dans un picture   Sam 23 Déc 2017 - 15:30

J'ai réessayé avec ton dernier document, ça marche très bien (329 x 156 pixels), un peu trop en hauteur peut-être, mais tout est là et c'est tout à fait exploitable comme ça, merci pour tout Klaus !

La conversion en html est tout à fait intéressante, pour des sites web par exemple, ou des docs, etc.
Mais pour mon usage je passe directement de l'affichage en RichEdit à l'image bmp, plus facile à intégrer dans un objet Panoramic.


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

avatar

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

MessageSujet: Re: Affichage d'un texte formaté dans un picture   Sam 23 Déc 2017 - 15:33

De rien, JL35 ! Ce genre de "défi" fait avancer KGF.dll !

Citation :
un peu trop en hauteur peut-être
Oui, certes, mais j'ai expliqué si-dessus pourquoi c'est comme ça. La mesure de la hauteur inclut l'interligne de la dernière ligne, même si cet interligne n'est pas visible. Mais il est pourtant là.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
JL35



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

MessageSujet: Re: Affichage d'un texte formaté dans un picture   Sam 23 Déc 2017 - 15:36

On s'est croisés...
Dans mon image obtenue j'ai même un peu plus que le dernier interligne je crois:

L'image bmp fait exactement les dimensions rendues par ta fonction (329 x 156).
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: Affichage d'un texte formaté dans un picture   Sam 23 Déc 2017 - 18:12

Chez moi, la fonction retourne una hauteur de 109, pas de 159. Regarde mes captures.

Autre chose: nouvelle version avec un ultime cadeau de Noël pour tous: insertion d'images dans un RidhEdit !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
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 2 sur 3Aller à la page : Précédent  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: