Page 3 sur 3

Re: Comment Faire une rotation d'un Texte en son centre

Publié : ven. 24/mars/2017 17:57
par Torp
djes a écrit :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.
Coucou,
Il semblerait que ce soit DrawVectorParagraph() qui a un pose problème (peut être par soucis de rapidité d'affichage), car le phénomène disparait avec DrawVectorText().

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(outWidth/2 - VectorTextWidth(Text$)/2, outHeight/2 - VectorTextHeight(Text$)/2)
  DrawVectorText(Text$)
  
  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
 
  DashPath(2, 20)

  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

Re: Comment Faire une rotation d'un Texte en son centre

Publié : ven. 24/mars/2017 18:42
par Kwai chang caine
Exact....marche nickel ici avec W10
C'est parfait comme effet, merci 8)

Re: Comment Faire une rotation d'un Texte en son centre

Publié : ven. 24/mars/2017 22:10
par Shadow
Effectivement, fonctionne très bien là.

Re: Comment Faire une rotation d'un Texte en son centre

Publié : ven. 24/mars/2017 23:19
par djes
Ah ok! :)