Le 24 janvier 2023 à 21:53 , Martial, C'est exprimé :
je n'ai pas réussi a faire marcher le code je lui ai fait une autre demande et il a
pondu du code, j'ai fait deux modification et ça fonctionne
eric....@meta-science.fr
propose moi plutôt du code que je mettrais dans l'évènement "paint" d'un "Canvas"
Voici un exemple de code que vous pourriez utiliser dans l'événement "Paint" d'un
"Canvas" pour afficher l'heure sous forme de pendule :
Copy code
Sub Paint(g as Graphics)
// Récupérez l'heure courante
dim currentTime as new NSDate
currentTime = NSDate.now
// Calculez les positions des mains de l'horloge
dim centerX as Double = Me.Width / 2
dim centerY as Double = Me.Height / 2
dim hourX as Double = centerX + (0.4 * centerX * Cos((currentTime.hourOfDay *
30 + currentTime.minuteOfHour * 0.5) - 90))
dim hourY as Double = centerY + (0.4 * centerY * Sin((currentTime.hourOfDay *
30 + currentTime.minuteOfHour * 0.5) - 90))
dim minuteX as Double = centerX + (0.6 * centerX *
Cos((currentTime.minuteOfHour * 6 + currentTime.secondOfMinute * 0.1) - 90))
dim minuteY as Double = centerY + (0.6 * centerY *
Sin((currentTime.minuteOfHour * 6 + currentTime.secondOfMinute * 0.1) - 90))
dim secondX as Double = centerX + (0.8 * centerX *
Cos((currentTime.secondOfMinute * 6) - 90))
dim secondY as Double = centerY + (0.8 * centerY *
Sin((currentTime.secondOfMinute * 6) - 90))
// Dessinez le cercle de l'horloge
g.drawEllipse(centerX - (0.9 * centerX), centerY - (0.9 * centerY), (0.9 *
centerX) * 2, (0.9 * centerY) * 2)
g.drawLine(centerX, centerY, hourX, hourY)
g.drawLine(centerX, centerY, minuteX, minuteY)
g.drawLine(centerX, centerY, secondX, secondY)
End Sub
Ce code utilise les propriétés de l'objet NSDate pour récupérer l'heure courante,
puis calcule les positions des mains de l'horloge en utilisant des fonctions
mathématiques pour convertir l'heure en degrés, puis en utilisant les fonctions Cos
et Sin pour calculer la position en x et y de chaque main de l'horloge. Enfin, il
utilise la méthode "DrawEllipse" pour dessiner le cercle de l'horloge, et les
méthodes "DrawLine" pour dessiner les mains de l'horloge. Il est important de noter
que les proportions de l'horloge sont données à titre d'exemple, vous pouvez les
ajuster selon vos besoins.
eric....@meta-science.fr
ce code ne fonctionne pas il ne connait pa
Je suis désolé, vous avez raison. Il semble que j'ai oublié d'inclure des
instructions pour importer les bibliothè
eric....@meta-science.fr
ce code ne fonctionne pas il ne connait pas il ne reconnait pas "NSdate"
Je suis désolé, vous avez raison. Il semble que j'ai oublié de mentionner que la
classe "NSDate" n'est pas disponible dans Xojo. Pour récupérer l'heure courante
dans Xojo, vous pouvez utiliser la classe "DateTime" à la place. Voici un exemple
de code que vous pourriez utiliser dans l'événement "Paint" d'un "Canvas" pour
afficher l'heure sous forme de pendule :
Copy code
Sub Paint(g as Graphics)
// Récupérez l'heure courante
dim currentTime as new DateTime
currentTime = DateTime.Now
// Calculez les positions des mains de l'horloge
dim centerX as Double = Me.Width / 2
dim centerY as Double = Me.Height / 2
dim hourX as Double = centerX + (0.4 * centerX * Cos((currentTime.Hour * 30 +
currentTime.Minute * 0.5) - 90))
dim hourY as Double = centerY + (0.4 * centerY * Sin((currentTime.Hour * 30 +
currentTime.Minute * 0.5) - 90))
dim minuteX as Double = centerX + (0.6 * centerX * Cos((currentTime.Minute * 6
+ currentTime.Second * 0.1) - 90))
dim minuteY as Double = centerY + (0.6 * centerY * Sin((currentTime.Minute * 6
+ currentTime.Second * 0.1) - 90))
dim secondX as Double = centerX + (0.8 * centerX * Cos((currentTime.Second * 6)
- 90))
dim secondY as Double = centerY + (0.8 * centerY * Sin((currentTime.Second * 6)
- 90))
// Dessinez le cercle de l'horloge
g.drawEllipse(centerX - (0.9 * centerX), centerY - (0.9 * centerY), (0.9 *
centerX) * 2, (0.9 * centerY) * 2)
g.drawLine(centerX, centerY, hourX, hourY)
g.drawLine(centerX, centerY, minuteX, minuteY)
g.drawLine(centerX, centerY, secondX, secondY)
End Sub
Ce code utilise la propriété "Now" de la classe "DateTime" pour récupérer l'heure
courante, puis calcule les positions des mains de l'horloge en utilisant des
fonctions mathématiques pour convertir l'heure en degrés, puis en utilisant les
fonctions Cos et Sin pour calculer la position en x et y de chaque main de
l'horloge. Enfin, il utilise la méthode "DrawEllipse" pour dessiner le cercle de
l'horloge, et les méthodes "DrawLine" pour dessiner les mains de l'horloge. Il est
important de noter que les proportions de l'horloge sont données à titre d'exem
j'ai changé le code comme ça et ça fonctionne :
// Récupérez l'heure courante
dim currentTime as DateTime
currentTime = DateTime.Now
// Calculez les positions des mains de l'horloge
dim centerX as Double = Me.Width / 2
dim centerY as Double = Me.Height / 2
dim hourX as Double = centerX + (0.4 * centerX * Cos((currentTime.Hour * 30 +
currentTime.Minute * 0.5) - 90))
dim hourY as Double = centerY + (0.4 * centerY * Sin((currentTime.Hour * 30 +
currentTime.Minute * 0.5) - 90))
dim minuteX as Double = centerX + (0.6 * centerX * Cos((currentTime.Minute * 6 +
currentTime.Second * 0.1) - 90))
dim minuteY as Double = centerY + (0.6 * centerY * Sin((currentTime.Minute * 6 +
currentTime.Second * 0.1) - 90))
dim secondX as Double = centerX + (0.8 * centerX * Cos((currentTime.Second * 6) -
90))
dim secondY as Double = centerY + (0.8 * centerY * Sin((currentTime.Second * 6) -
90))
// Dessinez le cercle de l'horloge
g.drawOval(centerX - (0.9 * centerX), centerY - (0.9 * centerY), (0.9 * centerX) *
2, (0.9 * centerY) * 2)
g.drawLine(centerX, centerY, hourX, hourY)
g.drawLine(centerX, centerY, minuteX, minuteY)
g.drawLine(centerX, centerY, secondX, secondY)