Schrift als Kreis verbiegen

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
Falko
Admin
Beiträge: 3535
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit)
Kontaktdaten:

Beitrag von Falko »

Du meinst es so herum?

Code: Alles auswählen

;Author: Falko Lünsmann
;API and PB4: Draws simple Text on circle
; changed for PB4: ts-soft

Procedure DrawRText(DC.l,x,y,Text.s,fFont.s,fangle.l,fHeight)
  Font = CreateFont_(fHeight,0,fangle*10,0,0,0,0,0,0,0,0,0,0,fFont)
  GetWindowRect_(WindowID(0),r.RECT)
  OldFont = SelectObject_(DC,Font)
  SetTextAlign_(DC,#TA_BASELINE   )
  SetBkMode_(DC,#TRANSPARENT)
  ExtTextOut_(DC, x,y,0 ,r,Text,Len(Text),0 )
  SelectObject_(DC,OldFont)
  DeleteObject_(Font)
EndProcedure

 OpenWindow(0, 0, 0, 400, 400, "Arc and bezier curves", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
 
 Procedure Circle_Text(String$)
  hDc=StartDrawing(WindowOutput(0))
  If hDc
      FrontColor(RGB(0,255,0))
      Radius=180
      String$="Purebasic 4 you"
 
      For i=1 To Len(string$)
         Zeichen$=Mid(String$,i,1)
         Winkel=-20 * i
         X = Radius*Sin(Winkel/360*2*#PI)
         Y = Radius*Cos(Winkel/360*2*#PI)
         DrawRText(hDc,WindowWidth(0)/2-X,WindowHeight(0)/2-Y,Zeichen$,"Arial",Winkel,40)
      Next i
   StopDrawing()
   EndIf
  EndProcedure
 Circle_Text("Happy Purebasic4")
 Repeat
  Event=WaitWindowEvent()
  If Event=#PB_Event_MoveWindow : Circle_Text("Happy Purebasic4") : EndIf ;  Redraw Windows!
 Until Event = #PB_Event_CloseWindow
Gruß Falko
Bild
Win11 Pro 64-Bit, PB_6.11b1
Benutzeravatar
roherter
Beiträge: 1407
Registriert: 10.04.2005 18:58
Kontaktdaten:

Beitrag von roherter »

Ja genau so danke! :D
Purebasic 5.0 32bit und 64 bit

I'm back from hell
Christian H
Beiträge: 134
Registriert: 18.10.2005 10:22
Wohnort: Welschbillig

Beitrag von Christian H »

Falko hat geschrieben:

Code: Alles auswählen

  If Event=#PB_Event_MoveWindow : Circle_Text("Happy Purebasic4") : EndIf ;  Redraw Windows!
Eine kleine Schönheitskorrektur

Code: Alles auswählen

If Event=#PB_Event_Repaint : Circle_Text("Happy Purebasic4") : EndIf ;  Redraw Windows!
Gruß Christian
Benutzeravatar
roherter
Beiträge: 1407
Registriert: 10.04.2005 18:58
Kontaktdaten:

Beitrag von roherter »

Christian H
Eine kleine Schönheitskorrektur

Code:
If Event=#PB_Event_Repaint : Circle_Text("Happy Purebasic4") : EndIf ; Redraw Windows!
Darum ging es gar nicht der code funktioniert. :?
Purebasic 5.0 32bit und 64 bit

I'm back from hell
Antworten