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
» Gestion d'un système client-serveur.
Texte sur cercle Emptypar Klaus Aujourd'hui à 1:15

» item_index(résolu)
Texte sur cercle Emptypar jjn4 Mar 14 Mai 2024 - 19:38

» Bataille terrestre
Texte sur cercle Emptypar jjn4 Lun 13 Mai 2024 - 15:01

» SineCube
Texte sur cercle Emptypar Marc Sam 11 Mai 2024 - 12:38

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Texte sur cercle Emptypar Marc Sam 11 Mai 2024 - 12:22

» Philharmusique
Texte sur cercle Emptypar jjn4 Ven 10 Mai 2024 - 13:58

» PANORAMIC V 1
Texte sur cercle Emptypar papydall Jeu 9 Mai 2024 - 3:22

» select intégrés [résolu]
Texte sur cercle Emptypar jjn4 Mer 8 Mai 2024 - 17:00

» number_mouse_up
Texte sur cercle Emptypar jjn4 Mer 8 Mai 2024 - 11:59

» Aide de PANORAMIC
Texte sur cercle Emptypar jjn4 Mer 8 Mai 2024 - 11:16

» trop de fichiers en cours
Texte sur cercle Emptypar lepetitmarocain Mer 8 Mai 2024 - 10:43

» Je teste PANORAMIC V 1 beta 1
Texte sur cercle Emptypar papydall Mer 8 Mai 2024 - 4:17

» bouton dans autre form que 0(résolu)
Texte sur cercle Emptypar leclode Lun 6 Mai 2024 - 13:59

» KGF_dll - nouvelles versions
Texte sur cercle Emptypar Klaus Lun 6 Mai 2024 - 11:41

» @Jack
Texte sur cercle Emptypar Jack Mar 30 Avr 2024 - 20:40

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier
-45%
Le deal à ne pas rater :
PC Portable LG Gram 17″ Intel Evo Core i7 32 Go /1 To
1099.99 € 1999.99 €
Voir le deal

 

 Texte sur cercle

Aller en bas 
3 participants
AuteurMessage
JL35




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

Texte sur cercle Empty
MessageSujet: Texte sur cercle   Texte sur cercle EmptySam 25 Aoû 2018 - 20:30

Le but était l'apposition d'un texte donné sur la périphérie d'un cercle.
Le problème était donc l'inclinaison variable des lettres du texte en fonction de leur position sur la circonférence.
Je l'avais fait avec une ressource externe (convert.exe de ImageMagick), mais j'ai pu le faire grâce à une dll de l'ami Klaus, fonction 'TorturePicture':

C'est donc sous la forme d'une SUB Texte_sur_cercle() ... original n'est-il pas ?
Code:
' Texte sur cercle
DIM f$,fr$,q$,xc%,yc%,ry%,tx$,pol$,sz%,rgb%,gis$
fr$ = "Z:\Img.jpg"
tx$ = "  JOYEUX PANORAMIC !"
PICTURE 1: FULL_SPACE 1: 2D_TARGET_IS 1

PRINT_TARGET_IS 1
pol$ = "Lucida Console": sz% = 32: ' police, taille
gis$ = "G": rgb% = 255*65536: ' gras, rouge
xc% = 250: yc% = 220: ry% = 150: ' cercle
Texte_sur_cercle(1,xc%,yc%,ry%,tx$,pol$,sz%,rgb%,gis$)
END
' ==============================================================================
SUB Texte_sur_cercle(p%,xc%,yc%,ry%,tx$,pol$,sz%,rgb%,gis$)
  ' Apposition dans le picture p% du texte tx$ sur le cercle
  ' centré en xc%,yc%,de rayon ry%
  ' Police texte pol$, taille sz%, couleur rgb% (R*65536+G*256+B)
  ' enrichissements gis$ = "G", "I", "S", combinables.
  IF LABEL("Rotima") = 0 THEN LABEL Rotima
  DIM_LOCAL px%,q$,wt%,wc%,hc%,rt%,ci%,an%,a1%,a2%,ac%,aa%,rot%,i%,a$,x%,y%
  DIM_LOCAL rtm$,f$,fr$,ftm$
  DIM_LOCAL w%,h%,ax%,ay%,dx%,dy%,res%,hg$,hd$,bd$,bg$,r%,g%,b%
  DIM_LOCAL kgf$: kgf$ = "C:\PANORAMIC\KGF\KGF.dll": ' <===== A AJUSTER !
  rtm$ = "C:\TEMP": ' répertoire des fichiers provisoires    A AJUSTER
  f$ = rtm$+"Im1.bmp"
  fr$ = rtm$+"Im2.bmp"
  ftm$ = rtm$+"TmpImg.bmp": ' A ajuster
  q$ = CHR$(34)
  2D_TARGET_IS p%
  DEGREES
  px%=990: PICTURE px%: HIDE px%: FONT_NAME px%,pol$: FONT_SIZE px%,sz%
  gis$ = UPPER$(gis$): IF INSTR(gis$,"G") > 0 THEN FONT_BOLD px%
  IF INSTR(gis$,"I") > 0 THEN FONT_ITALIC px%
  IF INSTR(gis$,"S") > 0 THEN FONT_UNDERLINE px%
  r% = INT(rgb%/65536): g% = BIN_AND(rgb%,65280)/256: b% = BIN_AND(rgb%,255)
  FONT_COLOR px%,r%,g%,b%
  PRINT_TARGET_IS px%
  wt% = TEXT_WIDTH(tx$,px%): ' largeur du texte, en pixels
  wt% = wt%+wt%/5: ' + écartement supplémentaire
  wc% = wt%/LEN(tx$): hc% = TEXT_HEIGHT(tx$,px%): ' dimensions d'un caractère
  i% = wc%: IF hc%>wc% THEN i% = hc%
  WIDTH px%,i%: HEIGHT px%,i%
  IMAGE px%+1
  ci% = 2*PI*ry%: ' circonférence
  an% = 360*wt%/ci%: ' angle occupé par tout le texte
  ac% = an%/LEN(tx$): ' angle occupé par un caractère
  a1% = 90+an%/2: ' angle de départ
  rt% = ry%+hc%: ' rayon de base des caractères
  rt% = rt%+rt%/20
  aa% = a1%
  DLL_ON kgf$
  FOR i% = 1 TO LEN(tx$)
      a$ = MID$(tx$,i%,1)
      IF a$ <> " "
          PRINT_LOCATE 0,0: PRINT a$
          IF aa% > 90
              rot% = -1*(aa%-90)
          ELSE
              rot% = 90-aa%
          END_IF
          CLIPBOARD_COPY px%
          w% = WIDTH(px%): h% = HEIGHT(px%)
          GOSUB Rotima
          x% = xc%+rt%*COS(aa%): y% = yc%-rt%*SIN(aa%)
          2D_IMAGE_PASTE px%+1,x%,y%
      END_IF
      aa% = aa%-ac%
  NEXT i%
  DLL_OFF
  PRINT_TARGET_IS p%: DELETE px%: DELETE px%+1
  EXIT_SUB
Rotima:
  IF FILE_EXISTS(ftm$) = 1 THEN FILE_DELETE ftm$
  ax% = w%*COS(rot%): ay% = h%*COS(rot%)
  dx% = h%*SIN(rot%): dy% = w%*SIN(rot%)
  hg$ = STR$(dx%)+",0": hd$ = STR$(dx%+ax%)+","+STR$(dy%)
  bd$ = STR$(ax%)+","+STR$(dy%+ay%): bg$ = "0,"+STR$(ay%)
    res% = DLL_CALL0("LoadPicture")
    res% = DLL_CALL4("TorturePicture",ADR(hg$),ADR(hd$),ADR(bd$),ADR(bg$))
    res% = DLL_CALL0("SavePicture")
  CLIPBOARD_PASTE px%+1: ' -> IMAGE
RETURN
END_SUB
' ==============================================================================
Texte sur cercle Pano10
On doit pouvoir le faire aussi sur une ellipse, quant à une courbe quelconque, j'aime mieux ne pas y penser !

On pourra remarquer que les caractères très inclinés ne sont pas forcément très bien définis, c'est inévitable à mon avis, dû à la rotation.

Le résultat est acceptable mais pas parfait, il y a de petits défaut dus à la rotation, et tel quel ça ne marche qu'avec une police à pas fixe.
Revenir en haut Aller en bas
silverman

silverman


Nombre de messages : 968
Age : 51
Localisation : Picardie
Date d'inscription : 18/03/2015

Texte sur cercle Empty
MessageSujet: Re: Texte sur cercle   Texte sur cercle EmptyDim 26 Aoû 2018 - 12:31

Pas mal!
Revenir en haut Aller en bas
JL35




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

Texte sur cercle Empty
MessageSujet: Re: Texte sur cercle   Texte sur cercle EmptyDim 26 Aoû 2018 - 12:52

Merci silverman,
mais j'envisage d'utiliser des sprites pour les caractères, pour les problèmes de chevauchement, on va voir...
Revenir en haut Aller en bas
Marc

Marc


Nombre de messages : 2397
Age : 63
Localisation : TOURS (37)
Date d'inscription : 17/03/2014

Texte sur cercle Empty
MessageSujet: Re: Texte sur cercle   Texte sur cercle EmptyDim 26 Aoû 2018 - 21:00

cheers Oui, c'est sympa et original !

JL35 a écrit:
mais j'envisage d'utiliser des sprites pour les caractères, pour les problèmes de chevauchement
Pour mémoire, tu as la couleur 0,0,0 qui est transparente qui très pratique.
Bonne soirée !
Revenir en haut Aller en bas
JL35




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

Texte sur cercle Empty
MessageSujet: Re: Texte sur cercle   Texte sur cercle EmptyDim 26 Aoû 2018 - 21:15

Bonsoir Marc,

C'est évidemment la couleur de transparence (noir pur) qui fait l'intérêt de la méthode sprite.
J'ai fait quelques tentatives d'adaptation, mais ce n'est pas très concluant...
Revenir en haut Aller en bas
Contenu sponsorisé





Texte sur cercle Empty
MessageSujet: Re: Texte sur cercle   Texte sur cercle Empty

Revenir en haut Aller en bas
 
Texte sur cercle
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Tracé d'ellipse / tracé d'arcs de cercle
» imprimer un texte
» Intersection d’un cercle et d’une droite
» saisie de texte
» Tracé d’arc de cercle par l'algorithme de Bresenham

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: