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
» Logiciel de planétarium.
Rotation de texte Emptypar Pedro Aujourd'hui à 8:08

» Un autre pense-bête...
Rotation de texte Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
Rotation de texte Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
Rotation de texte Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
Rotation de texte Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
Rotation de texte Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
Rotation de texte Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
Rotation de texte Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
Rotation de texte Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
Rotation de texte Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
Rotation de texte Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
Rotation de texte Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
Rotation de texte Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
Rotation de texte Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
Rotation de texte Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier
-55%
Le deal à ne pas rater :
Friteuse sans huile – PHILIPS – Airfryer HD9200/90 Série 3000
49.99 € 109.99 €
Voir le deal

 

 Rotation de texte

Aller en bas 
2 participants
AuteurMessage
JL35




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

Rotation de texte Empty
MessageSujet: Rotation de texte   Rotation de texte EmptyVen 12 Oct 2018 - 21:05

Je cherche à afficher un texte sous un angle quelconque (0 à 360°) sur un picture, à fond transparent.
J'y arrive de la façon suivante:
- transformer le texte en image individuelle,
- faire pivoter cette image de l'angle voulu
- transformer le résultat en Sprite
- appliquer le Sprite sur le Scene2d -> picture à l'endroit voulu.

Ce qui me gêne c'est l'étape 2: je suis obligé de faire appel à une ressource externe (convert.exe), qui marche très bien, mais j'aurais préféré en pur Panoramic.
C'est facile pour les multiples de 90°, mais pas moyen pour les angles quelconques.

Il y a bien une fonction de KGF.dll qui fait ça (TorturePicture), mais ce n'est pas non plus du pur Panoramic.

Quel dommage qu'il n'y ait pas de fonction de rotation de SPRITE !

Ça existe avec les fonctions 3D (3D_TEXT, 3D_ROTATE...), mais ce n'est pas satisfaisant pour cette application, le texte est déformé et/ou tronqué.
Revenir en haut Aller en bas
Marc

Marc


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

Rotation de texte Empty
MessageSujet: Re: Rotation de texte   Rotation de texte EmptySam 13 Oct 2018 - 10:04

Bonjour JL35 !

Peut-être pourrais-tu utiliser :

- Un PICTURE avec un fond noir COLOR x,0,0,0
- écrire ce que tu souhaites dessus,
- l'intégrer à un 3DPLANE
- l'orienter de l'angle souhaité 3D_Z_ROTATE au degré près
- un SNAPSHOT pour mémoriser en BMP
- charger ce BMP dans un PICTURE
- le découper avec 2D_IMAGE_COPY
- le charger dans un SPRITE
...

Voici une application que j'avais faite avec le "texte 3D Panoramic Weel "
Peut-être pourras-tu en tirer quelques idées ?

Code:
' ------------------------------------------------------------------------------
'  PANORAMIC 3D Wheel / Roue 3D
'  Marc - May 2018 - Panoramic v0.9.28.i18
'  http://panoramic-language.pagesperso-orange.fr/French/index.html
'  http://panoramic.forumotion.com
' ------------------------------------------------------------------------------
' main
    Init()
    Skin()
    Wheel()
    Index()
    Instructions()
    ON_MOUSE_DOWN 100,Action
 END
' ------------------------------------------------------------------------------
SUB Init()
    LABEL Action,result,Quit
    DIM c,x,y,t,alea
    DIM BackColor_r%,BackColor_v%,BackColor_b%
    DIM CenterOption%
    BackColor_r% = 242
    BackColor_v% = 236
    BackColor_b% = 223
    CenterOption% = 1
    DEGREES
    c=1
    HEIGHT 0,540 + HEIGHT(0)-HEIGHT_CLIENT(0)
    WIDTH 0,500 + WIDTH(0)-WIDTH_CLIENT(0)
    LEFT 0,(SCREEN_X-WIDTH(0))/2
    TOP 0,(SCREEN_Y-HEIGHT(0))/2
    PICTURE 1
    WIDTH 1,500
    HEIGHT 1,500
    ON_CLOSE 0, Quit
END_SUB
' ------------------------------------------------------------------------------
SUB Wheel()
    DIM_LOCAL i%
    SCENE3D 100
    HEIGHT 100,500
    WIDTH 100,500
    COLOR 100,BackColor_r%,BackColor_v%,BackColor_b%
    CAM_MOVE -2.6
    3D_PLANE 1
    3D_V_TILE 1,1
    3D_U_TILE 1,1
    3D_IMAGE_TEXTURE 1,10
    3D_X_ROTATE 1,0
END_SUB
' ------------------------------------------------------------------------------
SUB Index()
    SCENE2D 200
    HEIGHT 200,40
    WIDTH 200,31
    COLOR 200,BackColor_r%,BackColor_v%,BackColor_b%
    LEFT 200,235
    PICTURE 201
    HEIGHT 201,40
    WIDTH 201,31
    COLOR 201,BackColor_r%,BackColor_v%,BackColor_b%
    2D_TARGET_IS 201
    2D_PEN_COLOR 50,50,50
    2D_POLY_FROM 0,0
    2D_POLY_TO 15,39
    2D_POLY_TO 30,0
    2D_POLY_TO 15,10
    2D_POLY_TO 0,0
    2D_FLOOD 15,20,50,50,50
    IMAGE 202
    2D_IMAGE_COPY 202,0,0,31,40
    SPRITE 1
    SPRITE_IMAGE_LOAD 1,202      
END_SUB
' ------------------------------------------------------------------------------
SUB Skin()
    DIM_LOCAL i%,x,y,r%,v%,b%
    2D_TARGET_IS 1
    COLOR 1,BackColor_r%,BackColor_v%,BackColor_b%
    2D_PEN_COLOR 100,100,100
    2D_CIRCLE 250,250,210
    FOR i% = 0 to 360 STEP 24
        x = COS(i%)*210+250
        y = SIN(i%)*210+250
        2D_LINE 250,250,x,y
    NEXT i%
    FOR i% = 12 to 354 STEP 24
        x = COS(i%)*190+250
        y = SIN(i%)*190 +250
        READ r%
        READ v%
        READ b%
        2D_FLOOD x,y,r%,v%,b%
    NEXT i%
    Center(CenterOption%)
    IMAGE 10
    2D_IMAGE_COPY 10,0,0,500,500
END_SUB
' ------------------------------------------------------------------------------
SUB Center(a)
    IF a = 1
        2D_FILL_COLOR BackColor_r%,BackColor_v%,BackColor_b%
        2D_CIRCLE 250,250,40
        PRINT_TARGET_IS 1
        FONT_NAME 1,"Times New Roman"
        FONT_SIZE 1,22
        PRINT_LOCATE 233,215
        PRINT "3D"
        FONT_SIZE 1,12
        PRINT_LOCATE 218,245
        PRINT "Panoramic"
        PRINT_LOCATE 230,265
        PRINT "Wheel"
    END_IF
END_SUB
' ------------------------------------------------------------------------------
SUB Instructions()
    PICTURE 50
    HEIGHT 50,40
    WIDTH 50,500
    TOP 50,500
    COLOR 50,200,200,200
    2D_TARGET_IS 50
    2D_FILL_COLOR 200,200,200
    PRINT_TARGET_IS 50
    FONT_NAME 50,"Times New Roman"
    FONT_SIZE 50,18
    FONT_ITALIC 50
    PRINT_LOCATE 55,8
    PRINT "Click on the wheel / Cliquez sur la roue"
END_SUB                        
' ------------------------------------------------------------------------------
Action:
    OFF_MOUSE_DOWN 100
    ON_MOUSE_UP 100, Result
    c = NUMBER_TICKS
RETURN
' ------------------------------------------------------------------------------
Result:
    OFF_MOUSE_UP 100
    alea = NUMBER_TICKS - c + RND(360)
    IF alea > 5000
        alea = 4000 + RND(360) + RND(180)
    END_IF
    Animation()
    ON_MOUSE_DOWN 100,Action
RETURN
' ------------------------------------------------------------------------------
SUB Animation()
    WHILE alea > 5
        c=alea/100
        3D_Z_ROTATE 1,WRAP_VALUE((c+t)*-1)
        t=c+t
        DISPLAY
        PAUSE 20
        alea=alea-c
        c = c*.95
    END_WHILE
 END_SUB
' ------------------------------------------------------------------------------
DATA 0,255,255
DATA 0,0,0
DATA 0,0,255
DATA 255,0,255
DATA 0,128,0
DATA 128,128,128
DATA 0,255,0
DATA 128,0,0
DATA 0,0,128
DATA 255,255,255
DATA 128,128,0
DATA 128,0,128
DATA 255,0,0
DATA 0,128,128
DATA 255,255,0
' ------------------------------------------------------------------------------
Quit:
    TERMINATE
RETURN


Rotation de texte 91010


Bonne programmation !
Revenir en haut Aller en bas
Marc

Marc


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

Rotation de texte Empty
MessageSujet: Re: Rotation de texte   Rotation de texte EmptySam 13 Oct 2018 - 10:53

@JL35
Voici mon source (voir ci-dessus) modifié pour que tu puisses faire plus facilement des essais.

En bas de fenêtre, j'ai mis un SCOLL_BAR qui permet d'ajuster l'orientation du texte  entre 0 et 360°

Bonne continuation !

Code:
' main
    LABEL Action,Quit
    DEGREES
    HEIGHT 0,540 + HEIGHT(0)-HEIGHT_CLIENT(0)
    WIDTH 0,500 + WIDTH(0)-WIDTH_CLIENT(0)
    LEFT 0,(SCREEN_X-WIDTH(0))/2
    TOP 0,(SCREEN_Y-HEIGHT(0))/2
    ON_CLOSE 0, Quit
    Skin()
    Wheel()
    Instructions()
END
' ------------------------------------------------------------------------------
SUB Wheel()
    DIM_LOCAL i%
    SCENE3D 100
    HEIGHT 100,500
    WIDTH 100,500
    COLOR 100,0,0,0
    CAM_MOVE -2.6
    3D_PLANE 1
    3D_V_TILE 1,1
    3D_U_TILE 1,1
    3D_IMAGE_TEXTURE 1,10
    3D_X_ROTATE 1,0
END_SUB
' ------------------------------------------------------------------------------
SUB Skin()
    PICTURE 1
    WIDTH 1,500
    HEIGHT 1,500
    2D_TARGET_IS 1
    COLOR 1,0,0,0
    2D_FILL_COLOR 0,0,0
    2D_CIRCLE 250,250,40
    PRINT_TARGET_IS 1
    FONT_COLOR 1,255,0,0
    FONT_NAME 1,"Times New Roman"
    FONT_SIZE 1,50
    PRINT_LOCATE 100,100
    PRINT "Pour JL35"
    FONT_SIZE 1,50
    FONT_COLOR 1,0,255,0
    PRINT_LOCATE 130,180
    PRINT "Panoramic"
    FONT_COLOR 1,70,70,255
    PRINT_LOCATE 230,265
    PRINT "Texte"
    IMAGE 10
    2D_IMAGE_COPY 10,0,0,500,500
END_SUB
' ------------------------------------------------------------------------------
SUB Instructions()
    SCROLL_BAR 50
    HEIGHT 50,40
    WIDTH 50,500
    TOP 50,500
    MIN 50,0
    MAX 50,360
    ON_CHANGE 50,Action
END_SUB                        
' ------------------------------------------------------------------------------
Action:
    3D_Z_ROTATE 1,POSITION(50)
RETURN
' ------------------------------------------------------------------------------
Quit:
    TERMINATE
RETURN


Rotation de texte 911_bm10
Revenir en haut Aller en bas
JL35




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

Rotation de texte Empty
MessageSujet: Re: Rotation de texte   Rotation de texte EmptySam 13 Oct 2018 - 18:32

Bonjour Marc,

et pardon pour ma réaction un peu tardive (je suis un peu pris aujourd'hui et demain), mais je vais regarder ça de près. Les tentatives avec la 3D m'avaient un peu découragé, mais je vais voir.
Merci en tout cas.

----

Effectivement, après essais rapides, c'est très séduisant comme résultat, bravo;

Mais ce que je me demande c'est comment récupérer le résultat pour le mettre dans mon image/picture
(en passant par un Sprite/Scene2d) pour incrustation) ?
Il semble ne pas y avoir de fonctions de sauvegarde du Scene3d.

PS
On peut faire une capture d'écran du Picture 1 ça marche (pas un File_save), et la sauvegarder dans un fichier image.
Il y a peut-être plus simple, je regarde...
Revenir en haut Aller en bas
JL35




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

Rotation de texte Empty
MessageSujet: Re: Rotation de texte   Rotation de texte EmptySam 13 Oct 2018 - 22:51

Voilà Marc, en m'inspirant très largement de ton exemple:

Code:
' T2I.bas texte sur image
DIM rc$,x%,y%,ce%,ang%,a$,fnt$,sz%,rgb%,enr%
rc$ = CHR$(13)+CHR$(10)
WIDTH 0,700: HEIGHT 0,550
PICTURE 1: WIDTH 1,640: HEIGHT 1,480
file_load 1,"C:\GRAPH\JPG\goldgate.jpg": ' image de fond

a$ = "Merci Marc"+rc$+"Panoramic"+rc$+"Texte"
fnt$ = "Arial": sz% = 64
rgb% = 255*256: ' vert
enr% = 1: ' gras
ang% = 45: ' degrés
x% =150: y% = 200: ' centre du texte à insérer
Rotima(1,fnt$,sz%,rgb%,enr%,a$,1,x%,y%,ang%)
END
' ==============================================================================
SUB Rotima(pic%,fnt$,sz%,rgb%,enr%,a$,ce%,x%,y%,ang%)
  ' Apposition d'un texte a$ sur le picture pic%, angle d'inclinaison ang% (degrés)
  ' en x%,y% (coordonnées du centre du texte), police fnt$, taille sz%,
  ' couleur rgb% (=R*65536+G*256+B)
  ' enrichissements enr% (=1 Gras, =2 Italique, =4 Souligné, combinables)
  ' Si ce% = 1: texte auto-centré
    DIM_LOCAL c2d%,c2p%,rc$,fm%,p%,im%,s2%,s3%,sb%,wi%,hi%,wt%,ht%,w%,h%,k%
    DIM_LOCAL xt%,yt%,xc%,yc%,sa$,b$,ff$,r%,g%,b%
    ff$ = "C:\TEMP\Fsav.bmp"                               
    rc$ = CHR$(13)+CHR$(10)
    c2d% = NUMBER_2D_TARGET: c2p% = NUMBER_PRINT_TARGET
       
    DEGREES
    wi% = 900: hi% = 900
    fm%=900: FORM fm%: TOP fm%,0: LEFT fm%,0: BORDER_SMALL fm%
      r% = WIDTH(fm%)-WIDTH_CLIENT(fm%): g% = HEIGHT(fm%)-HEIGHT_CLIENT(fm%)
      WIDTH fm%,wi%+r%: HEIGHT fm%,hi%+g%
    p%=fm%+1: PICTURE p%: PARENT p%,fm%: WIDTH p%,wi%: HEIGHT p%,hi%
      2D_TARGET_IS p%: COLOR p%,0,0,0: 2D_FILL_COLOR 0,0,0
      PRINT_TARGET_IS p%: FONT_NAME p%,fnt$: FONT_SIZE p%,sz%
    r% = INT(rgb%/65536): g% = BIN_AND(rgb%,65280)/256: b% = BIN_AND(rgb%,255)
    IF r%=0 AND g%=0 AND b%=0 THEN r%=5: g%=5: b%=5
    FONT_COLOR p%,r%,g%,b%
    IF BIN_AND(enr%,1) <> 0 THEN FONT_BOLD p%
    IF BIN_AND(enr%,2) <> 0 THEN FONT_ITALIC p%
    IF BIN_AND(enr%,4) <> 0 THEN FONT_UNDERLINE p%

    ht% = h%: wt% = 0: h% = TEXT_HEIGHT(a$,p%): sa$ = a$: k% = INSTR(a$,rc$)
    WHILE k%>0
        b$ = LEFT$(a$,k%-1): a$ = RIGHT_POS$(a$,k%+2)
        w% = TEXT_WIDTH(b$,pic%): IF w% > wt% THEN wt% = w%
        ht% = ht%+h%: k% = INSTR(a$,rc$)
    END_WHILE
    w% = TEXT_WIDTH(a$,p%): IF w% > wt% THEN wt% = w%
    xc% = wi%/2: yc% = hi%/2 
    xt% = wi%/2-wt%/2: yt% = hi%/2-ht%/2: a$ = sa$: k% = INSTR(a$,rc$)
    WHILE k%>0
        b$ = LEFT$(a$,k%-1): a$ = RIGHT_POS$(a$,k%+2)
        w% = TEXT_WIDTH(b$,p%): IF ce% = 1 THEN xt% = xc%-w%/2 
        PRINT_LOCATE xt%,yt%: PRINT b$: yt% = yt%+h%: k% = INSTR(a$,rc$)
    END_WHILE
    w% = TEXT_WIDTH(a$,p%): PRINT_LOCATE xc%-w%/2,yt%: PRINT a$
    im% = p%+1: IMAGE im%: PARENT im%,fm%
    2D_IMAGE_COPY im%,0,0,wi%,hi%
   
    s3%=im%+1: SCENE3D s3%: PARENT s3%,fm%: HEIGHT s3%,wi%: WIDTH s3%,hi%
    COLOR s3%,0,0,0
    CAM_MOVE -2.6: 3D_PLANE 1: 3D_V_TILE 1,1: 3D_U_TILE 1,1
    3D_IMAGE_TEXTURE 1,im%
    3D_X_ROTATE 1,0: 3D_Z_ROTATE 1,ang%
    2D_TARGET_IS fm%: WAIT 100
    2D_IMAGE_COPY im%,LEFT(p%),TOP(p%),LEFT(p%)+wi%,TOP(p%)+hi%

    FILE_SAVE im%,ff$
    s2% = s3%+1: SCENE2D s2%: PARENT s2%,fm%: WIDTH s2%,WIDTH(pic%): HEIGHT s2%,HEIGHT(pic%)
    SPRITE s2%: SPRITE_FILE_LOAD s2%,ff$
    FILE_SAVE pic%,ff$: FILE_LOAD s2%,ff$
    SPRITE_POSITION s2%,x%-wi%/2,y%-hi%/2
    SNAPSHOT s2%,ff$: FILE_LOAD pic%,ff$
    FILE_DELETE ff$
   
    2D_TARGET_IS c2d%: PRINT_TARGET_IS c2p%
    DELETE fm%: DELETE im%
END_SUB
' ==============================================================================
A tester plus en détail, sans doute (il doit y avoir des limites, mais assez lointaines je pense), mais merci à toi pour l'idée !
Rotation de texte Exempl11
Revenir en haut Aller en bas
Marc

Marc


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

Rotation de texte Empty
MessageSujet: Re: Rotation de texte   Rotation de texte EmptySam 13 Oct 2018 - 23:53

Bravo JL35 !

Je viens de regarder ton code source.
Super ! cheers

J'y ai apporté une petite modification :

Rotation de texte 900_bm10

Je charge directement le 2D_IMAGE_COPY im% dans le SPRITE s2% par la commande SPRITE_IMAGE_LOAD.

Code:
' T2I.bas texte sur image
DIM rc$,x%,y%,ce%,ang%,a$,fnt$,sz%,rgb%,enr%
rc$ = CHR$(13)+CHR$(10)
WIDTH 0,700: HEIGHT 0,550
PICTURE 1: WIDTH 1,640: HEIGHT 1,480
file_load 1,"1.jpg": ' image de fond

a$ = "BRAVO"+rc$+"JL35"+rc$+"Très bonne idée !"
fnt$ = "Arial": sz% = 64
rgb% = 255*256: ' vert
enr% = 1: ' gras
ang% = 45: ' degrés
x% =150: y% = 200: ' centre du texte à insérer
Rotima(1,fnt$,sz%,rgb%,enr%,a$,1,x%,y%,ang%)
END
' ==============================================================================
SUB Rotima(pic%,fnt$,sz%,rgb%,enr%,a$,ce%,x%,y%,ang%)
  ' Apposition d'un texte a$ sur le picture pic%, angle d'inclinaison ang% (degrés)
  ' en x%,y% (coordonnées du centre du texte), police fnt$, taille sz%,
  ' couleur rgb% (=R*65536+G*256+B)
  ' enrichissements enr% (=1 Gras, =2 Italique, =4 Souligné, combinables)
  ' Si ce% = 1: texte auto-centré
    DIM_LOCAL c2d%,c2p%,rc$,fm%,p%,im%,s2%,s3%,sb%,wi%,hi%,wt%,ht%,w%,h%,k%
    DIM_LOCAL xt%,yt%,xc%,yc%,sa$,b$,ff$,r%,g%,b%
    ff$ = "C:\Users\Marc\Dropbox\Panoramic\jl35\2.bmp"                                
    rc$ = CHR$(13)+CHR$(10)
    c2d% = NUMBER_2D_TARGET: c2p% = NUMBER_PRINT_TARGET
        
    DEGREES
    wi% = 900: hi% = 900
    fm%=900: FORM fm%: TOP fm%,0: LEFT fm%,0: BORDER_SMALL fm%
      r% = WIDTH(fm%)-WIDTH_CLIENT(fm%): g% = HEIGHT(fm%)-HEIGHT_CLIENT(fm%)
      WIDTH fm%,wi%+r%: HEIGHT fm%,hi%+g%
    p%=fm%+1: PICTURE p%: PARENT p%,fm%: WIDTH p%,wi%: HEIGHT p%,hi%
      2D_TARGET_IS p%: COLOR p%,0,0,0: 2D_FILL_COLOR 0,0,0
      PRINT_TARGET_IS p%: FONT_NAME p%,fnt$: FONT_SIZE p%,sz%
    r% = INT(rgb%/65536): g% = BIN_AND(rgb%,65280)/256: b% = BIN_AND(rgb%,255)
    IF r%=0 AND g%=0 AND b%=0 THEN r%=5: g%=5: b%=5
    FONT_COLOR p%,r%,g%,b%
    IF BIN_AND(enr%,1) <> 0 THEN FONT_BOLD p%
    IF BIN_AND(enr%,2) <> 0 THEN FONT_ITALIC p%
    IF BIN_AND(enr%,4) <> 0 THEN FONT_UNDERLINE p%

    ht% = h%: wt% = 0: h% = TEXT_HEIGHT(a$,p%): sa$ = a$: k% = INSTR(a$,rc$)
    WHILE k%>0
        b$ = LEFT$(a$,k%-1): a$ = RIGHT_POS$(a$,k%+2)
        w% = TEXT_WIDTH(b$,pic%): IF w% > wt% THEN wt% = w%
        ht% = ht%+h%: k% = INSTR(a$,rc$)
    END_WHILE
    w% = TEXT_WIDTH(a$,p%): IF w% > wt% THEN wt% = w%
    xc% = wi%/2: yc% = hi%/2  
    xt% = wi%/2-wt%/2: yt% = hi%/2-ht%/2: a$ = sa$: k% = INSTR(a$,rc$)
    WHILE k%>0
        b$ = LEFT$(a$,k%-1): a$ = RIGHT_POS$(a$,k%+2)
        w% = TEXT_WIDTH(b$,p%): IF ce% = 1 THEN xt% = xc%-w%/2  
        PRINT_LOCATE xt%,yt%: PRINT b$: yt% = yt%+h%: k% = INSTR(a$,rc$)
    END_WHILE
    w% = TEXT_WIDTH(a$,p%): PRINT_LOCATE xc%-w%/2,yt%: PRINT a$
    im% = p%+1: IMAGE im%: PARENT im%,fm%
    2D_IMAGE_COPY im%,0,0,wi%,hi%
    
    s3%=im%+1: SCENE3D s3%: PARENT s3%,fm%: HEIGHT s3%,wi%: WIDTH s3%,hi%
    COLOR s3%,0,0,0
    CAM_MOVE -2.6: 3D_PLANE 1: 3D_V_TILE 1,1: 3D_U_TILE 1,1
    3D_IMAGE_TEXTURE 1,im%
    3D_X_ROTATE 1,0: 3D_Z_ROTATE 1,ang%
    2D_TARGET_IS fm%: WAIT 100
    2D_IMAGE_COPY im%,LEFT(p%),TOP(p%),LEFT(p%)+wi%,TOP(p%)+hi%
'    FILE_SAVE im%,ff$
    s2% = s3%+1: SCENE2D s2%: PARENT s2%,fm%: WIDTH s2%,WIDTH(pic%): HEIGHT s2%,HEIGHT(pic%)
'    SPRITE s2%: SPRITE_FILE_LOAD s2%,ff$
    SPRITE s2%: SPRITE_IMAGE_LOAD s2%,im%
    FILE_SAVE pic%,ff$: FILE_LOAD s2%,ff$
    SPRITE_POSITION s2%,x%-wi%/2,y%-hi%/2
    SNAPSHOT s2%,ff$: FILE_LOAD pic%,ff$
    FILE_DELETE ff$
    
    2D_TARGET_IS c2d%: PRINT_TARGET_IS c2p%
    DELETE fm%: DELETE im%
END_SUB
' ==============================================================================

Rotation de texte 901_bm10
Revenir en haut Aller en bas
JL35




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

Rotation de texte Empty
MessageSujet: Re: Rotation de texte   Rotation de texte EmptyDim 14 Oct 2018 - 9:12

Bonne idée, effectivement je l'avais loupé celui-là (le Sprite_Image_Load), ça évite une écriture.

C'est un peu lourd (la récupération du résultat par une copie d'écran), mais ça marche.

Quelques petits défauts, par exemple ce liseré noir autour des lettres de couleur, mais je pense que c'est d'origine mis par le Print pour bien délimiter les lettres (?), un noir différent de 0,0,0.

Merci en tout cas Marc pour ta contribution, et... bon dimanche !

(Un petit hs:
Juste entre nous, Marc, l'image ci-dessus, c'est encore une de tes nombreuses résidences secondaires ?)
Revenir en haut Aller en bas
Marc

Marc


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

Rotation de texte Empty
MessageSujet: Re: Rotation de texte   Rotation de texte EmptyDim 14 Oct 2018 - 10:44

JL35 a écrit:
Juste entre nous, Marc, l'image ci-dessus, c'est encore une de tes nombreuses résidences secondaires ?

Non, hélas... C'est le château d'Amboise.

Je vous fais visiter la Touraine !
Sur mon avatar, pour l’instant, c'est l’hôtel de ville de TOURS avec une partie de la place Jean Jaurès.
Revenir en haut Aller en bas
Contenu sponsorisé





Rotation de texte Empty
MessageSujet: Re: Rotation de texte   Rotation de texte Empty

Revenir en haut Aller en bas
 
Rotation de texte
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Rotation de texte
» Rotation d'un rectangle
» Rotation de bitmap
» Rotation de bitmap (bis)
» Rotation Algorithm

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Présentation et bavardage-
Sauter vers: