[Résolu] Tracer les chiffres d'une horloge 24 heures

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: [Résolu] Tracer les chiffres d'une horloge 24 heures

Message par falsam »

@Dobro : Le code de traçage d'un cercle donnant bien un cercle je ne comprenais pas trop ton histoire d'horloge ronde. Merci pour cet update Dobro :)
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
Micoute
Messages : 2584
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: [Résolu] Tracer les chiffres d'une horloge 24 heures

Message par Micoute »

kernadec a écrit :bonjour
D' abord Merci pour le partage! :D
Peut être une option pour cette horloge car on pourrait avoir une lecture plus simple
en se disant que pour heure qui est en cours l'aiguille des heures devrait rester sur le chiffe de l'heure
exemple: pour 11h59 l'aiguille devrait être sur le 11 et passerai sur le 12 en même temps que les aiguilles des minutes et des secondes arrive sur le 60
qu'en pensez vous

Cordialement
Non, il faut que ça se rapproche le plus possible d'une horloge analogique, normalement on devrait deviner l'heure juste à la position de la petite aiguille !

Merci aussi à Dobro pour sa participation, c'est fou ce qu'on peut faire avec un projet commun ! C'est pour ça que j'aime ce forum !
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 !
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: [Résolu] Tracer les chiffres d'une horloge 24 heures

Message par Ar-S »

@Dobro,
Il est fatigué mon Dobro...

Enlève le PB_Window_ScreenCentered sinon ton callback prend les nouvelles coord centrées
ensuite niveau chemin je préfère toujours ce genre de code.

en ajoutant un Global Path$ = getCurrentDirectory()+"Horloge.ini"
puis en remplaçant tes 1,"Horloge.ini" par 1,path$

Et la sa marche sans le resize (pas de bug)

J'ai aussi ajouté une vérif de l'existence du fichier ini, ça permet de centrer l'horloge s'il n'existe pas.
Enfin je sauve les nouvelles coord lorsqu'on quitte le programme, ça ne sert à rien que la vérif et la sauvegarde se facent en boucle dans le callback.

Code : Tout sélectionner

;##################
;#      Horloge murale        #
;##################
Enumeration Font
		#FontHour
		#FontMinute
EndEnumeration

Enumeration Fenetre
		#Fenetre_principale
EndEnumeration

Enumeration Sprites
		#Trotteuse
		#GrandeAiguille
		#PetiteAiguille
		#Fond
EndEnumeration

Global TailleImage = 720 ; Toujours carrée et en pixels

Global XC.i, YC.i, Radius.i ;Coordonnées et rayon du point central du cercle
Global X.f, Y.f ;Coordonnées des points sur le cercle
Global Digit.i
Global Buffer.s
Global Pos_wx,Pos_wy

; Ajout Ar-S
Global Path$ = GetCurrentDirectory()+"Horloge.ini"
Global.b Quite = 0


Global Couleur=RGB(0,0,0)

If InitSprite()
		Else
		End
EndIf

Declare  MyWindowCallback(WindowID, Message, wParam, lParam)
Declare  Forme(fenetre,forme)

; Ajout Ar-S
If FileSize(Path$) < 1
	StyleWin = #PB_Window_MinimizeGadget | #PB_Window_ScreenCentered
Else
	StyleWin = #PB_Window_MinimizeGadget 
EndIf
	
	
	
	
If OpenFile(1,Path$)
		Pos_wx=Val(ReadString(1))
		Pos_wy=Val(ReadString(1))
		CloseFile(1)

		Debug "Open File"		
		Debug Pos_wx
		Debug Pos_wy
EndIf

If OpenWindow(#Fenetre_principale, Pos_wx, Pos_wy, TailleImage, TailleImage, "Horloge murale", StyleWin)
		If OpenWindowedScreen(WindowID(#Fenetre_principale), 0, 0, TailleImage, TailleImage, 1, 0, 0)
				
				CreateSprite(#Trotteuse, 800, 800)
				CreateSprite(#GrandeAiguille, 800, 800)
				CreateSprite(#PetiteAiguille, 800, 800)
				CreateSprite(#Fond, 800, 800)
				
				LoadFont(#FontHour, "Arial", 24, #PB_Font_Bold)
				LoadFont(#FontMinute, "Arial", 15)
				
				If StartDrawing(SpriteOutput(#Fond)) ;- fond
						
						;Coordonnées du point central du cercle
						XC = 400
						YC = 400
						
						;Point central
						Circle(XC, YC, 2, RGB(255, 69, 0))
						
						;Les points des heures
						Radius = 220
						For N = 0 To 345 Step 15
								X = XC + Radius * Cos(N * #PI / 180)
								Y = YC + Radius * Sin(N * #PI / 180)
								Circle(X,Y,3, RGB(255, 69, 0))
						Next
						
						;Les points des minutes
						Radius = 360
						For N = 0 To 364 Step 6
								X = XC + Radius * Cos(N * #PI / 180)
								Y = YC + Radius * Sin(N * #PI / 180)
								Circle(X,Y,3, RGB(128, 128, 128))
						Next
						
						;Les Chiffres des heures
						Digit=5
						Radius = 260
						DrawingFont(FontID(#FontHour))
						For N = 0 To 345 Step 15
								Digit+1
								If Digit>23
										Digit = 0
								EndIf
								
								X = XC + Radius * Cos(N * #PI / 180)
								Y = YC + Radius * Sin(N * #PI / 180)
								Buffer=Str(Digit)
								
								DrawingMode(#PB_2DDrawing_Transparent)
								DrawText(X-TextWidth(Buffer)/2, Y-TextHeight(Buffer)/2, Buffer, RGB(255, 255, 255))
								DrawingMode(#PB_2DDrawing_Default)
						Next
						
						;Les Chiffres des minutes
						Digit=15
						Radius = 380
						DrawingFont(FontID(#FontMinute))
						For N = 1 To 359 Step 6
								Digit+1
								If Digit>60
										Digit = 1
								EndIf
								
								X = XC + Radius * Cos(N * #PI / 180)
								Y = YC + Radius * Sin(N * #PI / 180)
								Buffer=Str(Digit-1)
								
								DrawingMode(#PB_2DDrawing_Transparent)
								DrawText(X-TextWidth(Buffer)/2, Y-TextHeight(Buffer)/2, Buffer, RGB(255, 255, 255))
								DrawingMode(#PB_2DDrawing_Default)
						Next
						
						StopDrawing()
				EndIf
				
				If StartDrawing(SpriteOutput(#Trotteuse))
						LineXY(398, 550, 398, 65, RGB(200, 35, 35))
						LineXY(399, 550, 399, 60, RGB(200, 35, 35))
						LineXY(400, 550, 400, 55, RGB(200, 35, 35))
						LineXY(401, 550, 401, 60, RGB(200, 35, 35))
						LineXY(402, 550, 402, 65, RGB(200, 35, 35))
						
						Circle(400, 530, 10, RGB(200, 35, 35))
						Circle(400, 535,  9, RGB(200, 35, 35))
						Circle(400, 540,  8, RGB(200, 35, 35))
						Circle(400, 545,  7, RGB(200, 35, 35))
						Circle(400, 550,  6, RGB(200, 35, 35))
						Circle(400, 400, 15, RGB(200, 35, 35))
						StopDrawing()
				EndIf
				
				If StartDrawing(SpriteOutput(#GrandeAiguille))
						LineXY(390, 400, 380, 180, RGB(255, 255, 255))
						LineXY(380, 180, 390, 170, RGB(255, 255, 255))
						LineXY(390, 170, 390,  50, RGB(255, 255, 255))
						LineXY(390,  50, 400,  42, RGB(255, 255, 255))
						LineXY(400,  42, 410,  50, RGB(255, 255, 255))
						LineXY(410,  50, 410, 170, RGB(255, 255, 255))
						LineXY(410, 170, 420, 180, RGB(255, 255, 255))
						LineXY(420, 180, 410, 400, RGB(255, 255, 255))
						LineXY(410, 400, 390, 400, RGB(255, 255, 255))
						FillArea(400, 300, RGB(255, 255, 255), RGB(255, 255, 255))
						
						Circle(400, 400, 30, RGB(200, 35, 35))
						StopDrawing()
				EndIf
				
				If StartDrawing(SpriteOutput(#PetiteAiguille))
						LineXY(390, 400, 375, 280, RGB(255, 255, 255))
						LineXY(375, 280, 390, 260, RGB(255, 255, 255))
						LineXY(390, 260, 390, 210, RGB(255, 255, 255))
						LineXY(390, 210, 400, 195, RGB(255, 255, 255))
						LineXY(400, 195, 410, 210, RGB(255, 255, 255))
						LineXY(410, 210, 410, 260, RGB(255, 255, 255))
						LineXY(410, 260, 425, 280, RGB(255, 255, 255))
						LineXY(425, 280, 410, 400, RGB(255, 255, 255))
						LineXY(410, 400, 390, 400, RGB(255, 255, 255))
						FillArea(400, 300, RGB(255, 255, 255), RGB(255, 255, 255))
						
						StopDrawing()
				EndIf
				
		EndIf
		
EndIf


SetWindowCallback(@MyWindowCallback())
Forme (#Fenetre_principale,2); ronde



Repeat
		
		Evenement = WaitWindowEvent(2)
		
		
		xsec.s = FormatDate("%ss", Date())
		xmin.s = FormatDate("%ii", Date())
		xheure.s = FormatDate("%hh", Date())
		If Val(xheure) > 11
				xheure = Str(Val(xheure)-12)
		EndIf 
		
		s = Val(xsec) * 6
		m = (Val(xmin) * 60 + Val(xsec)) / 10
		h = (Val(xheure) * 60 + Val(xmin)) / 4 ; système 24 h
		;h = (Val(xheure) * 60 + Val(xmin)) / 2 ; système 12 h
		
		ZoomSprite(#Trotteuse, TailleImage, TailleImage)
		ZoomSprite(#GrandeAiguille, TailleImage, TailleImage)
		ZoomSprite(#PetiteAiguille, TailleImage, TailleImage)
		ZoomSprite(#Fond, TailleImage, TailleImage)
		
		RotateSprite(#Trotteuse, s, 0)
		RotateSprite(#GrandeAiguille, m, 0)
		RotateSprite(#PetiteAiguille, h, 0)
		
		DisplayTransparentSprite(#Fond, 0, 0, 255)
		DisplayTransparentSprite(#PetiteAiguille, 0, 0, 255)
		DisplayTransparentSprite(#GrandeAiguille, 0, 0, 255)
		DisplayTransparentSprite(#Trotteuse, 0, 0, 255)
		
		FlipBuffers()
		ClearScreen(couleur)
		
		;Delay(20)
		
		
		
Until Evenement = #PB_Event_CloseWindow Or Quite = 1
			Pos_wx = WindowX(#Fenetre_principale)
			Pos_wy = WindowY(#Fenetre_principale)
				
			OpenFile(1,Path$)
				WriteStringN(1,Str(Pos_wx))
				WriteStringN(1,Str(Pos_wy))
			CloseFile(1)

				Debug Pos_wx
				Debug Pos_wy


End




Procedure MyWindowCallback(WindowID, Message, wParam, lParam)
		
		;debug Message
		Result = #PB_ProcessPureBasicEvents
		Select Message

				Case #WM_LBUTTONDOWN       ; Deplace la fenetre si on clicque Dessus
				SendMessage_(WindowID(#Fenetre_principale), #WM_NCLBUTTONDOWN, #HTCAPTION, 0)   
				
				
				Case #WM_RBUTTONDOWN  ; Sauve position et quit avec le bouton droit souris
					Quite = 1
				
				
		EndSelect  
		ProcedureReturn Result
EndProcedure

Procedure Forme(fenetre,forme) 
		If forme=2 ; si on a choisi la forme 2 Ronde
				Region = CreateEllipticRgn_(4,  31, WindowWidth(fenetre),WindowHeight(fenetre)+25) ; Création de la région pour faire une fenêtre ronde !!!
				SetWindowRgn_(WindowID(fenetre), Region, #True) ; On applique la région
				DeleteObject_(Region) ; On supprime la région
		EndIf
EndProcedure; EPB
Vieux con ! :mrgreen: (j'attendais avec impatience de te la replacer)
~~~~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
Avatar de l’utilisateur
Micoute
Messages : 2584
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: [Résolu] Tracer les chiffres d'une horloge 24 heures

Message par Micoute »

Bonsoir et merci à toute la collégialité (je ne sais pas si c'est français), enfin à tout le monde,

avec toutes vos réponses, j'ai fait une synthèse et j'ai fait une horloge 12 et 24 h au choix

Code : Tout sélectionner

;##################
;#     Horloge 12 et 24 h    #
;##################
Enumeration Font
  #FontHour
  #FontMinute
EndEnumeration

Enumeration Fenetre
  #Fenetre_principale
EndEnumeration

Enumeration Sprites
  #Trotteuse
  #GrandeAiguille
  #PetiteAiguille
  #Fond
EndEnumeration

Global TailleImage = 720 ; Toujours carrée et en pixels

Global XC.i, YC.i, Radius.i ;Coordonnées et rayon du point central du cercle
Global X.f, Y.f ;Coordonnées des points sur le cercle
Global Digit.i
Global Buffer.s
Global Pos_wx,Pos_wy
Global.i systeme = 24
Global Path$ = GetCurrentDirectory()+"Horloge.ini"
Global.b Quitter = 0

Global Couleur=RGB(0,0,0)

If InitSprite()
Else
  End
EndIf

Declare  MyWindowCallback(WindowID, Message, wParam, lParam)
Declare  Forme(fenetre,forme)

If FileSize(Path$) < 1
  StyleWin = #PB_Window_MinimizeGadget | #PB_Window_ScreenCentered
Else
  StyleWin = #PB_Window_MinimizeGadget 
EndIf

If OpenFile(1,Path$)
  Pos_wx=Val(ReadString(1))
  Pos_wy=Val(ReadString(1))
  CloseFile(1)
EndIf

If OpenWindow(#Fenetre_principale, Pos_wx, Pos_wy, TailleImage, TailleImage, "Horloge murale", StyleWin)
  If OpenWindowedScreen(WindowID(#Fenetre_principale), 0, 0, TailleImage, TailleImage, 1, 0, 0)
    
    CreateSprite(#Trotteuse, 800, 800)
    CreateSprite(#GrandeAiguille, 800, 800)
    CreateSprite(#PetiteAiguille, 800, 800)
    CreateSprite(#Fond, 800, 800)
    
    LoadFont(#FontHour, "Arial", 24, #PB_Font_Bold)
    LoadFont(#FontMinute, "Arial", 15)
    
    If StartDrawing(SpriteOutput(#Fond)) ;- fond
      
      ;Coordonnées du point central du cercle
      XC = 400
      YC = 400
      
      ;Point central
      Circle(XC, YC, 2, RGB(255, 69, 0))
      
      ;Les points des heures
      Radius = 220      
      If systeme = 12
        
        For N = 0 To 359 Step 6
          X = XC + Radius * Cos(N * #PI / 180)
          Y = YC + Radius * Sin(N * #PI / 180)
          If Mod(N,30) = 0
            Circle(X,Y,6, RGB(255,69,0))
          Else  
            Circle(X,Y,3, RGB(255, 255, 255))
          EndIf  
        Next
        
      Else
        
        For N = 0 To 359 Step 3
          X = XC + Radius * Cos(N * #PI / 180)
          Y = YC + Radius * Sin(N * #PI / 180)          
          If Mod(N,15) = 0
            Circle(X,Y,6, RGB(255,69,0))
          Else  
            Circle(X,Y,3, RGB(255, 255, 255))
          EndIf          
        Next
      EndIf
      
      ;Les points des minutes
      Radius = 360
      For N = 0 To 364 Step 6
        X = XC + Radius * Cos(N * #PI / 180)
        Y = YC + Radius * Sin(N * #PI / 180)
        Circle(X,Y,3, RGB(128, 128, 128))
      Next
      
      ;Les Chiffres des heures
      If systeme = 12
        Digit=2
        Rayon = 260
        DrawingFont(FontID(#FontHour))        
        For N = 0 To 345 Step 30
          Digit+1
          If Digit>12
            Digit = Mod(12,4) + 1
          EndIf
          
          X = XC + Rayon * Cos(N * #PI / 180)
          Y = YC + Rayon * Sin(N * #PI / 180)
          Buffer=Str(Digit)
          
          DrawingMode(#PB_2DDrawing_Transparent)
          DrawText(X-TextWidth(Buffer)/2, Y-TextHeight(Buffer)/2, Buffer, RGB(255, 255, 255))
          DrawingMode(#PB_2DDrawing_Default)
        Next
        
      Else
        
        Digit=5
        Radius = 260
        DrawingFont(FontID(#FontHour))
        For N = 0 To 345 Step 15
          Digit+1
          If Digit>23
            Digit = 0
          EndIf
          
          X = XC + Radius * Cos(N * #PI / 180)
          Y = YC + Radius * Sin(N * #PI / 180)
          Buffer=Str(Digit)
          
          DrawingMode(#PB_2DDrawing_Transparent)
          DrawText(X-TextWidth(Buffer)/2, Y-TextHeight(Buffer)/2, Buffer, RGB(255, 255, 255))
          DrawingMode(#PB_2DDrawing_Default)
        Next
      EndIf 
      
      ;Les Chiffres des minutes
      Digit=15
      Radius = 380
      DrawingFont(FontID(#FontMinute))
      For N = 1 To 359 Step 6
        Digit+1
        If Digit>60
          Digit = 1
        EndIf
        
        X = XC + Radius * Cos(N * #PI / 180)
        Y = YC + Radius * Sin(N * #PI / 180)
        Buffer=Str(Digit-1)
        
        DrawingMode(#PB_2DDrawing_Transparent)
        DrawText(X-TextWidth(Buffer)/2, Y-TextHeight(Buffer)/2, Buffer, RGB(255, 255, 255))
        DrawingMode(#PB_2DDrawing_Default)
      Next
      
      StopDrawing()
    EndIf
    
    If StartDrawing(SpriteOutput(#Trotteuse))
      LineXY(398, 550, 398, 65, RGB(200, 35, 35))
      LineXY(399, 550, 399, 60, RGB(200, 35, 35))
      LineXY(400, 550, 400, 55, RGB(200, 35, 35))
      LineXY(401, 550, 401, 60, RGB(200, 35, 35))
      LineXY(402, 550, 402, 65, RGB(200, 35, 35))
      
      Circle(400, 530, 10, RGB(200, 35, 35))
      Circle(400, 535,  9, RGB(200, 35, 35))
      Circle(400, 540,  8, RGB(200, 35, 35))
      Circle(400, 545,  7, RGB(200, 35, 35))
      Circle(400, 550,  6, RGB(200, 35, 35))
      Circle(400, 400, 15, RGB(200, 35, 35))
      StopDrawing()
    EndIf
    
    If StartDrawing(SpriteOutput(#GrandeAiguille))
      LineXY(390, 400, 380, 180, RGB(255, 255, 255))
      LineXY(380, 180, 390, 170, RGB(255, 255, 255))
      LineXY(390, 170, 390,  50, RGB(255, 255, 255))
      LineXY(390,  50, 400,  42, RGB(255, 255, 255))
      LineXY(400,  42, 410,  50, RGB(255, 255, 255))
      LineXY(410,  50, 410, 170, RGB(255, 255, 255))
      LineXY(410, 170, 420, 180, RGB(255, 255, 255))
      LineXY(420, 180, 410, 400, RGB(255, 255, 255))
      LineXY(410, 400, 390, 400, RGB(255, 255, 255))
      FillArea(400, 300, RGB(255, 255, 255), RGB(000, 255, 000))
      
      Circle(400, 400, 30, RGB(200, 35, 35))
      StopDrawing()
    EndIf
    
    If StartDrawing(SpriteOutput(#PetiteAiguille))
      LineXY(390, 400, 375, 280, RGB(255, 255, 255))
      LineXY(375, 280, 390, 260, RGB(255, 255, 255))
      LineXY(390, 260, 390, 210, RGB(255, 255, 255))
      LineXY(390, 210, 400, 195, RGB(255, 255, 255))
      LineXY(400, 195, 410, 210, RGB(255, 255, 255))
      LineXY(410, 210, 410, 260, RGB(255, 255, 255))
      LineXY(410, 260, 425, 280, RGB(255, 255, 255))
      LineXY(425, 280, 410, 400, RGB(255, 255, 255))
      LineXY(410, 400, 390, 400, RGB(255, 255, 255))
      FillArea(400, 300, RGB(255, 255, 255), RGB(255, 255, 000))
      
      StopDrawing()
    EndIf
    
  EndIf
  
EndIf


SetWindowCallback(@MyWindowCallback())
Forme (#Fenetre_principale,2); ronde


Repeat
  
  Evenement = WaitWindowEvent(2)
  
  
  xsec.s = FormatDate("%ss", Date())
  xmin.s = FormatDate("%ii", Date())
  xheure.s = FormatDate("%hh", Date())   
  
  s = Val(xsec) * 6
  m = (Val(xmin) * 60 + Val(xsec)) / 10
  
  If systeme = 12
    
    If Val(xheure) > 11
      xheure = Str(Val(xheure)-12)
      h = (Val(xheure) * 60 + Val(xmin)) / 2 ; système 12 h
    EndIf
    
  Else
    
    h = (Val(xheure) * 60 + Val(xmin)) / 4 ; système 24 h
    
  EndIf
  
  
  ZoomSprite(#Trotteuse, TailleImage, TailleImage)
  ZoomSprite(#GrandeAiguille, TailleImage, TailleImage)
  ZoomSprite(#PetiteAiguille, TailleImage, TailleImage)
  ZoomSprite(#Fond, TailleImage, TailleImage)
  
  RotateSprite(#Trotteuse, s, 0)
  RotateSprite(#GrandeAiguille, m, 0)
  RotateSprite(#PetiteAiguille, h, 0)
  
  DisplayTransparentSprite(#Fond, 0, 0, 255)
  DisplayTransparentSprite(#PetiteAiguille, 0, 0, 255)
  DisplayTransparentSprite(#GrandeAiguille, 0, 0, 255)
  DisplayTransparentSprite(#Trotteuse, 0, 0, 255)
  
  FlipBuffers()
  ClearScreen(couleur)
  
Until Evenement = #PB_Event_CloseWindow Or Quitter = 1

End


Procedure MyWindowCallback(WindowID, Message, wParam, lParam)
  
  ;debug Message
  Result = #PB_ProcessPureBasicEvents
  Select Message
    Case #WM_PAINT
      ResizeWindow(#Fenetre_principale,Pos_wx, Pos_wy,#PB_Ignore, #PB_Ignore)
      
      ; *************************************************************
    Case #WM_LBUTTONDOWN       ; Deplace la fenetre si on clicque Dessus
      SendMessage_(WindowID(#Fenetre_principale), #WM_NCLBUTTONDOWN, #HTCAPTION, 0)   
      
      
    Case #WM_RBUTTONDOWN  ; Sauve position et quit avec le bouton droit souris
      Pos_wx = WindowX(#Fenetre_principale)
      Pos_wy = WindowY(#Fenetre_principale)
      
      OpenFile(1,Path$)
      WriteStringN(1,Str(Pos_wx))
      WriteStringN(1,Str(Pos_wy))
      CloseFile(1)
      Quitter = 1
      End
  EndSelect  
  ProcedureReturn Result
EndProcedure

Procedure Forme(fenetre,forme) 
  If forme=2 ; si on a choisi la forme 2 Ronde
    Region = CreateEllipticRgn_(4,  31, WindowWidth(fenetre),WindowHeight(fenetre)+25) ; Création de la région pour faire une fenêtre ronde !!!
    SetWindowRgn_(WindowID(fenetre), Region, #True) ; On applique la région
    DeleteObject_(Region) ; On supprime la région
  EndIf
EndProcedure
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 !
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: [Résolu] Tracer les chiffres d'une horloge 24 heures

Message par Backup »

Ar-S a écrit : Vieux con ! :mrgreen: (j'attendais avec impatience de te la replacer)
:lol: :)
Avatar de l’utilisateur
venom
Messages : 3138
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: [Résolu] Tracer les chiffres d'une horloge 24 heures

Message par venom »

Joli rendu, bravo.






@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Répondre