
Comment Faire une rotation d'un Texte en son centre
Re: Comment Faire une rotation d'un Texte en son centre
j'ai edité mon message ci dessus 

Re: Comment Faire une rotation d'un Texte en son centre
La version animée avec les nouvelles commandes de PB 5.60 ( AddImageFrame(), ImageFrameCount(), SetImageFrame(), GetImageFrame() )
Code : Tout sélectionner
Global Police = LoadFont(10, "Arial", 10,#PB_Font_HighQuality)
Global ImageRot = CreateImage(1,300,300,32,RGB(255, 255, 255))
StartDrawing(ImageOutput(1))
Box(0, 0, 300, 300, RGB(255, 255, 255))
StopDrawing()
Procedure GenereAnim()
StartDrawing(ImageOutput(1))
DrawingFont(Police)
Texte$="Hello World !"
Hauteur.i = TextHeight(Texte$)
Longueur.i = TextWidth(Texte$+Space(1))
demi_hypo.d=Sqr(Pow(Hauteur,2)+Pow(Longueur,2))/2
ang_hypo.d= Degree(ASin(Hauteur/Longueur))
StopDrawing()
For Angle = 0 To 359 ; Step 1
StartDrawing(ImageOutput(1))
x = 150 + (Longueur/2) * Sin(Angle / 180 * #PI)
y = 150 + (Longueur/2) * Cos(Angle / 180 * #PI)
Box(0,0,300,300,RGB(255,255,255))
DrawRotatedText(x, y, Texte$, (90+Angle)+ang_hypo+5, RGB(0, 0, 0))
AddImageFrame(1, Angle)
StopDrawing()
Next Angle
EndProcedure
;- PROG
GenereAnim()
RemoveImageFrame(1, 359)
If OpenWindow(0, 0, 0, 300, 300, "RotatedTextCentré", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
CanvasGadget(2,0,0,300,300)
AddWindowTimer(0,2,15)
Repeat
Event = WaitWindowEvent()
Select Event
Case #PB_Event_Timer
If Count < ImageFrameCount(1)-1
Count+1
Else
Count = 1
EndIf
SetImageFrame(1, Count)
StartDrawing(CanvasOutput(2))
DrawImage(ImageID(1), 0, 0)
StopDrawing()
EndSelect
Until Event = #PB_Event_CloseWindow
EndIf
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Re: Comment Faire une rotation d'un Texte en son centre
Je vous remercie.
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.
PureBasic: 5.60 x64 Bits.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.
PureBasic: 5.60 x64 Bits.
Re: Comment Faire une rotation d'un Texte en son centre
J'ai corrigé vite fait le code de JohnJohnsonSHERMAN, pas besoin d'utiliser la trigo ; il suffit de penser au texte comme s'il était contenu dans un rectangle.
Code : Tout sélectionner
Enumeration
#Window
#Canvas
#Refresh
EndEnumeration
Procedure DrawCenterRotatedText(Gadget,Text$,Angle.f,BackColor,ForeColor)
StartVectorDrawing(CanvasVectorOutput(Gadget))
Protected outWidth = VectorOutputWidth(), outHeight = VectorOutputHeight()
VectorSourceColor(BackColor)
FillVectorOutput()
VectorFont(LoadFont(0,"Verdana",20))
VectorSourceColor(ForeColor)
RotateCoordinates(outWidth/2,outHeight/2,Angle);,#PB_Coordinate_Source)
MovePathCursor(0, outHeight/2 - VectorParagraphHeight(Text$, outWidth, outHeight)/2)
DrawVectorParagraph(Text$, outWidth, outHeight, #PB_VectorParagraph_Center)
AddPathCircle(outWidth/2,outHeight/2,5)
VectorSourceColor(RGBA(200,220,255,120))
For i=0 To outWidth Step 20
MovePathCursor(i,0)
AddPathLine(i,outHeight)
Next
For i=0 To outHeight Step 20
MovePathCursor(0,i)
AddPathLine(outWidth,i)
Next
StrokePath(2)
StopVectorDrawing()
EndProcedure
OpenWindow(#Window,0,0,400,400,"Rotation de texte VectorDrawing",#PB_Window_ScreenCentered | #PB_Window_SizeGadget | #PB_Window_MaximizeGadget | #PB_Window_MinimizeGadget)
CanvasGadget(#Canvas,0,0,400,400)
AddWindowTimer(#Window,#Refresh,50)
Repeat
event = WaitWindowEvent()
Select event
Case #PB_Event_Timer
If EventTimer() = #Refresh
i +1
DrawCenterRotatedText(#Canvas,"Ce texte tourne",i,RGBA(0,100,180,255),RGBA(255,255,255,255))
EndIf
Case #PB_Event_SizeWindow
ResizeGadget(#Canvas,0,0,WindowWidth(#Window),WindowHeight(#Window))
EndSelect
Until event = #PB_Event_CloseWindow
- Kwai chang caine
- Messages : 6989
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
Re: Comment Faire une rotation d'un Texte en son centre
Dans le codes de ARS et Sherman/DJES, je pense que ce doit être normal que toutes les lettres aient la danse de saint guy ? 

Re: Comment Faire une rotation d'un Texte en son centre
Faudrait rassembler tous ça et en faire un tuto car c'est utile
Merci à vous.
Oui ça dense mais je ne sais pas si on peut faire mieux, c'est déjà pas mal !

Merci à vous.
Oui ça dense mais je ne sais pas si on peut faire mieux, c'est déjà pas mal !
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.
PureBasic: 5.60 x64 Bits.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.
PureBasic: 5.60 x64 Bits.
Re: Comment Faire une rotation d'un Texte en son centre
Il suffit de mettre une police plus grosse et ça ne dance plus, je trouve ça magnifique, merci pour le partage
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Un homme doit être poli, mais il doit aussi être libre !
- JohnJohnsonSHERMAN
- Messages : 648
- Inscription : dim. 13/déc./2015 11:05
- Localisation : Allez, cherche...
- Contact :
Re: Comment Faire une rotation d'un Texte en son centre
Merci Djes !
@KCC : Chez moi le mien (VectorDrawing) ne danse pas, mais alors pas du tout
Sur la seconde version (par djes), par contre ca danse,mais il n'y a pas moyen de faire autrement je pense.
@Micoute :je vais tester ca, merci


@KCC : Chez moi le mien (VectorDrawing) ne danse pas, mais alors pas du tout

Sur la seconde version (par djes), par contre ca danse,mais il n'y a pas moyen de faire autrement je pense.
@Micoute :je vais tester ca, merci

"Le bug se situe entre la chaise et le clavier"
Votre expert national en bogage et segfaults.
CPU : AMD A8 Quad core - RAM 8Gb - HDD 2To
Votre expert national en bogage et segfaults.
CPU : AMD A8 Quad core - RAM 8Gb - HDD 2To
- Windows 10 x64 - PB 5.61 x64
- Linux Ubuntu 16.04 LTS x64 (dual boot) - PB pas encore réinstallé
- Kwai chang caine
- Messages : 6989
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
Re: Comment Faire une rotation d'un Texte en son centre
Ok merci pour la réponse, j'avais peur que y'ai encore que chez moi 

Re: Comment Faire une rotation d'un Texte en son centre
Il suffit de ralentir pour comprendre pourquoi (code ci-dessous). Il semble que le calcul de la position des lettres ne se fait pas au sous-pixel, et donc, ça saute de pixel en pixel. Pour éviter ça, soit on change la résolution de sortie (et on réduit après), soit on dessine le texte une fois sur une image et on tourne l'image.
Code : Tout sélectionner
Enumeration
#Window
#Canvas
#Refresh
EndEnumeration
Procedure DrawCenterRotatedText(Gadget,Text$,Angle.f,BackColor,ForeColor)
StartVectorDrawing(CanvasVectorOutput(Gadget))
Protected outWidth = VectorOutputWidth(), outHeight = VectorOutputHeight()
VectorSourceColor(BackColor)
FillVectorOutput()
VectorFont(LoadFont(0,"Verdana",20))
VectorSourceColor(ForeColor)
RotateCoordinates(outWidth/2,outHeight/2,Angle);,#PB_Coordinate_Source)
MovePathCursor(0, outHeight/2 - VectorParagraphHeight(Text$, outWidth, outHeight)/2)
DrawVectorParagraph(Text$, outWidth, outHeight, #PB_VectorParagraph_Center)
AddPathCircle(outWidth/2,outHeight/2,5)
VectorSourceColor(RGBA(200,220,255,120))
For i=0 To outWidth Step 20
MovePathCursor(i,0)
AddPathLine(i,outHeight)
Next
For i=0 To outHeight Step 20
MovePathCursor(0,i)
AddPathLine(outWidth,i)
Next
StrokePath(2)
StopVectorDrawing()
EndProcedure
OpenWindow(#Window,0,0,400,400,"Rotation de texte VectorDrawing",#PB_Window_ScreenCentered | #PB_Window_SizeGadget | #PB_Window_MaximizeGadget | #PB_Window_MinimizeGadget)
CanvasGadget(#Canvas,0,0,400,400)
AddWindowTimer(#Window,#Refresh,50)
Repeat
event = WaitWindowEvent()
Select event
Case #PB_Event_Timer
If EventTimer() = #Refresh
i.f +0.1
DrawCenterRotatedText(#Canvas,"Ce texte tourne",i,RGBA(0,100,180,255),RGBA(255,255,255,255))
EndIf
Case #PB_Event_SizeWindow
ResizeGadget(#Canvas,0,0,WindowWidth(#Window),WindowHeight(#Window))
EndSelect
Until event = #PB_Event_CloseWindow
- Kwai chang caine
- Messages : 6989
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
Re: Comment Faire une rotation d'un Texte en son centre
Ouaih...quant on pense aux whatmilliards de calculs qu'il fait pour juste ce qu'on pourrait faire avec deux doigts sur une feuille pivotant sur un bureau 
D'un autre coté, il fait autant d'opérations à la seconde que moi j'en aurait jamais fait dans toute une vie

D'un autre coté, il fait autant d'opérations à la seconde que moi j'en aurait jamais fait dans toute une vie

Re: Comment Faire une rotation d'un Texte en son centre
et qui te dis que dans la simulation de Vie que nous appelons LA VIE , l'ordinateur de DieuKwai chang caine a écrit :Ouaih...quant on pense aux whatmilliards de calculs qu'il fait pour juste ce qu'on pourrait faire avec deux doigts sur une feuille pivotant sur un bureau
n’exécute pas encore plus d'operations ??
operation pour t'avoir fait avec des doigts , qui font tourner la feuille ,
et tes yeux qui compare avec l'ordinateur qui fait tourner un prg fait par un mega prg appelé "humain" recursivité au summum

Re: Comment Faire une rotation d'un Texte en son centre
Dobro serait-il croyant ?
J'pense pas mais qui sais
D'ailleurs qui l'es ici !
J'pense pas mais qui sais

D'ailleurs qui l'es ici !
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.
PureBasic: 5.60 x64 Bits.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.
PureBasic: 5.60 x64 Bits.
Re: Comment Faire une rotation d'un Texte en son centre
J'ai du mal à suivre...Zorro a écrit :et qui te dis que dans la simulation de Vie que nous appelons LA VIE , l'ordinateur de Dieu
n’exécute pas encore plus d'operations ??
- Kwai chang caine
- Messages : 6989
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
Re: Comment Faire une rotation d'un Texte en son centre
Zorro a écrit :et qui te dis que dans la simulation de Vie que nous appelons LA VIE , l'ordinateur de Dieu
n’exécute pas encore plus d'operations ??
operation pour t'avoir fait avec des doigts , qui font tourner la feuille ,
et tes yeux qui compare avec l'ordinateur qui fait tourner un prg fait par un mega prg appelé "humain" recursivité au summum


En fait rien.

Chaque chose qui est découverte depuis la nuit des temps, paraissait parfois impossible encore quelque secondes avant

Il se dit aussi que tout peut être converti en mathématique, alors ta théorie est pas si ridicule que ça
La nature reste encore pour beaucoup un mystère, et pourquoi pas peut être un matin, apercevoir MATRIX au réveil, à défaut de "MATRIQ"


