|
| HORLOGE ANALOGIQUE en WDXI |
| Iniciado por monney-peinture, 05,oct. 2007 10:21 - 13 respuestas |
| |
| | | |
|
| |
| Publicado el 05,octubre 2007 - 10:21 |
Bonjour tous,
Je cherche le moyen d'afficher dans un cercle une aiguille des secondes. Je fais ça facilement en Quick-Basic (on ne rit pas svp) mais je suis perdu en WD.
Une bonne âme pourait-il m'éguiller sur une piste ou éventuellement me fournir un bout de code, surtout pour le déplacement de l'aiguille ?
Bonne journée et d'avance merci. Sam |
| |
| |
| | | |
|
| | |
| |
| Publicado el 05,octubre 2007 - 10:52 |
Personnelement je te conseil de récuprerer un flash et l'integrer à windev.
Si tu tiens vraiment à le programmer toi meme, il faut le dessiner par programmation. Pour ce faire, tu dois ajouter un champ "image".
pour le code :
//définit qu'on dessine sur cette image et pas sur une autre ^^ dDebutDessin(IMG_IMAGE1) //pour le mode de dessin dChangeMode(XORjesaisplusquoi)
//trace une ligne à midi dLigne(50,50,0,50...)
Bon dev ! |
| |
| |
| | | |
|
| | |
| |
| Publicado el 05,octubre 2007 - 11:57 |
Merci, mais ça je sais faire, le problème c'est le calcul des déplacements des aiguilles que je cherche. Ou éventuellement traduire le code Quick-basic ci-dessous en WD. (Trop ancien pour WD)
SCREEN 12 CLS r = 180 X = 320 Y = 240 P = 3.141593 * 2 * r PAINT (2, 2), 15 CIRCLE (X, Y), r, 0 FOR T = 2 * 3.141593 TO 0 STEP -3.141593 / 6 PSET (SIN(T) * r + X, COS(T) * r + Y), 0 PSET (SIN(T) * (r - 1) + X, COS(T) * (r - 1) + Y), 0 NEXT
timing = TIMER
H = VAL(MID$(TIME$, 1, 2)) M = VAL(MID$(TIME$, 4, 2)) S = VAL(MID$(TIME$, 7, 2))
HB = (2 * 3.141593 * (11 - H + (60 - M) / 60)) / 12 MB = (2 * 3.141593 * (59 - M + 1)) / 60 SB = (2 * 3.141593 * (59 - S + 1)) / 60
LINE (X, Y)-(-SIN(SB) * (r - 2) + X, -COS(SB) * (r - 2) + Y), 4 LINE (X, Y)-(-SIN(MB) * (r - 20) + X, -COS(MB) * (r - 20) + Y), 2 LINE (X, Y)-(-SIN(HB) * (r - 100) + X, -COS(HB) * (r - 100) + Y), 0
WHILE a$ <> CHR$(27) a$ = INKEY$ DO LOOP WHILE TIMER - timing >= 1 timing = TIMER LOCATE 1, 1: PRINT TIME$ H = VAL(MID$(TIME$, 1, 2)) M = VAL(MID$(TIME$, 4, 2)) S = VAL(MID$(TIME$, 7, 2))
HB = (2 * 3.141593 * (11 - H + (60 - M) / 60)) / 12 exHB = (2 * 3.141593 * (11 - H + (60 - M + 1) / 60)) / 12 IF M = 0 THEN exHB = (2 * 3.141593 * (11 - H - 59 / 60)) / 12 MB = (2 * 3.141593 * (59 - M + 1)) / 60 exMB = (2 * 3.141593 * (59 - M + 2)) / 60 SB = (2 * 3.141593 * (59 - S + 1)) / 60 exSB = (2 * 3.141593 * (59 - S + 2)) / 60
LINE (X, Y)-(-SIN(exSB) * (r - 2) + X, -COS(exSB) * (r - 2) + Y), 15 LINE (X, Y)-(-SIN(SB) * (r - 2) + X, -COS(SB) * (r - 2) + Y), 4 IF S = 1 THEN LINE (X, Y)-(-SIN(exMB) * (r - 20) + X, -COS(exMB) * (r - 20) + Y), 15 LINE (X, Y)-(-SIN(MB) * (r - 20) + X, -COS(MB) * (r - 20) + Y), 2 LINE (X, Y)-(-SIN(exHB) * (r - 100) + X, -COS(exHB) * (r - 100) + Y), 15 LINE (X, Y)-(-SIN(HB) * (r - 100) + X, -COS(HB) * (r - 100) + Y), 0 END IF IF INT(exSB) = INT(MB) THEN LINE (X, Y)-(-SIN(MB) * (r - 20) + X, -COS(MB) * (r - 20) + Y), 2 IF INT(exSB) = INT(HB) THEN LINE (X, Y)-(-SIN(HB) * (r - 100) + X, -COS(HB) * (r - 100) + Y), 0 IF INT(exMB) = INT(HB) THEN LINE (X, Y)-(-SIN(HB) * (r - 100) + X, -COS(HB) * (r - 100) + Y), 0 WEND
Encore merci... |
| |
| |
| | | |
|
| | |
| |
| Publicado el 05,octubre 2007 - 12:12 |
Bonjour,
Donnez-moi votre email. Je vous envoie une fenêtre qui fait cela
Bon Dev
GH |
| |
| |
| | | |
|
| | |
| |
| Publicado el 05,octubre 2007 - 12:21 |
Merci, mais ça je sais faire, le problème c'est le calcul des déplacements des aiguilles que je cherche. Ta question était "Je cherche le moyen d'afficher dans un cercle une aiguille des secondes." et non "je cherche le moyen de calculer la position d'une aiguille" -> soit précis... Saturnin n'aurait pas perdu son temps...
> Ou éventuellement traduire le code Quick-basic ci-dessous en WD. (Trop ancien pour WD) > Quel est ton soucis dans la traduction de ce code ? - tu dis connaitre les fonction de dessins, pas de soucis - tu fais des calculs de base, pas de soucis - un timer si j'ai bien suivi, voir l'aide - récupérer l'heure du systeme en cherchant "heure" dans l'aide on trouve ça facilement - en dehors du fait que tu fais tes calculs en radians et que les fonctions de trigo de WD sont en degrés je ne vois pas ton soucis au vu de ce que tu donnes comme infos.
eric l.
SCREEN 12 CLS r = 180 X = 320 Y = 240 P = 3.141593 * 2 * r PAINT (2, 2), 15 CIRCLE (X, Y), r, 0 FOR T = 2 * 3.141593 TO 0 STEP -3.141593 / 6 PSET (SIN(T) * r + X, COS(T) * r + Y), 0 PSET (SIN(T) * (r - 1) + X, COS(T) * (r - 1) + Y), 0 NEXT
timing = TIMER
H = VAL(MID$(TIME$, 1, 2)) M = VAL(MID$(TIME$, 4, 2)) S = VAL(MID$(TIME$, 7, 2))
HB = (2 * 3.141593 * (11 - H + (60 - M) / 60)) / 12 MB = (2 * 3.141593 * (59 - M + 1)) / 60 SB = (2 * 3.141593 * (59 - S + 1)) / 60
LINE (X, Y)-(-SIN(SB) * (r - 2) + X, -COS(SB) * (r - 2) + Y), 4 LINE (X, Y)-(-SIN(MB) * (r - 20) + X, -COS(MB) * (r - 20) + Y), 2 LINE (X, Y)-(-SIN(HB) * (r - 100) + X, -COS(HB) * (r - 100) + Y), 0
WHILE a$ <> CHR$(27) a$ = INKEY$ DO LOOP WHILE TIMER - timing >= 1 timing = TIMER LOCATE 1, 1: PRINT TIME$ H = VAL(MID$(TIME$, 1, 2)) M = VAL(MID$(TIME$, 4, 2)) S = VAL(MID$(TIME$, 7, 2))
HB = (2 * 3.141593 * (11 - H + (60 - M) / 60)) / 12 exHB = (2 * 3.141593 * (11 - H + (60 - M + 1) / 60)) / 12 IF M = 0 THEN exHB = (2 * 3.141593 * (11 - H - 59 / 60)) / 12 MB = (2 * 3.141593 * (59 - M + 1)) / 60 exMB = (2 * 3.141593 * (59 - M + 2)) / 60 SB = (2 * 3.141593 * (59 - S + 1)) / 60 exSB = (2 * 3.141593 * (59 - S + 2)) / 60
LINE (X, Y)-(-SIN(exSB) * (r - 2) + X, -COS(exSB) * (r - 2) + Y), 15 LINE (X, Y)-(-SIN(SB) * (r - 2) + X, -COS(SB) * (r - 2) + Y), 4 IF S = 1 THEN LINE (X, Y)-(-SIN(exMB) * (r - 20) + X, -COS(exMB) * (r - 20) + Y), 15 LINE (X, Y)-(-SIN(MB) * (r - 20) + X, -COS(MB) * (r - 20) + Y), 2 LINE (X, Y)-(-SIN(exHB) * (r - 100) + X, -COS(exHB) * (r - 100) + Y), 15 LINE (X, Y)-(-SIN(HB) * (r - 100) + X, -COS(HB) * (r - 100) + Y), 0 END IF IF INT(exSB) = INT(MB) THEN LINE (X, Y)-(-SIN(MB) * (r - 20) + X, -COS(MB) * (r - 20) + Y), 2 IF INT(exSB) = INT(HB) THEN LINE (X, Y)-(-SIN(HB) * (r - 100) + X, -COS(HB) * (r - 100) + Y), 0 IF INT(exMB) = INT(HB) THEN LINE (X, Y)-(-SIN(HB) * (r - 100) + X, -COS(HB) * (r - 100) + Y), 0 WEND
Encore merci...
|
| |
| |
| | | |
|
| | |
| |
| Publicado el 05,octubre 2007 - 12:38 |
Salut,
Voici un code tiré d'un exemple LST qui utilisait une fenêtre interne pour dessiner l'heure dans différentes villes du monde :
Il faut : un champ image et une image d'horloge affichée dedans : Appeler la procédure suivante dans un timer lancé toutes les secondes :
PROCEDURE AfficheHeure(sChampImage, bAfficheSecondes = Faux)
hHeure est une Heure nHeure est un entier nMinute est un entier nSeconde est un entier nAngleHeure est un entier nAngleMinute est un entier nAngleSeconde est un entier nLargeur est un entier nHauteur est un entier
// Récupère l'heure hHeure = Maintenant() // Récupère les heure et minute nHeure = hHeure..Heure nMinute = hHeure..Minute nSeconde = hHeure..Seconde // Récupère les dimensions du champ nLargeur = {sChampImage, indChamp}..Largeur nHauteur = {sChampImage, indChamp}..Hauteur SI nLargeur < nHauteur ALORS nHauteur = nLargeur SI nHauteur < nLargeur ALORS nLargeur = nHauteur // Démarre le dessin dFinDessin(sChampImage) dDébutDessin(sChampImage, dEffacer) nCouleur est un entier = RVB(14,47,118)
// L'heure doit être passée en format 12:00 SI nHeure > 12 ALORS nHeure -= 12
// Calcule l'angle nAngleHeure = nHeure * (360 / 12) - 90 nAngleMinute = nMinute * (360 / 60) - 90 nAngleSeconde = nSeconde * (360 / 60) - 90 // Calcule le point central nX est un entier = nLargeur / 2 + 5 nY est un entier = nHauteur / 2 // Calcule le point X,Y de l'heure nHX est un entier = nX + 2 + (Cosinus(nAngleHeure) * (nX - (nLargeur/4))) nHY est un entier = nY + 2 +(Sinus(nAngleHeure) * (nY - (nLargeur/4))) // Calcule le point X,Y de la minute nMX est un entier = nX + 2 +(Cosinus(nAngleMinute) * (nX - (nLargeur/5))) nMY est un entier = nY + 2 +(Sinus(nAngleMinute) * (nY - (nLargeur/5))) // Calcule le point X,Y de la seconde nSX est un entier = nX + 2 +(Cosinus(nAngleSeconde) * (nX - (nLargeur/6))) nSY est un entier = nY + 2 +(Sinus(nAngleSeconde) * (nY - (nLargeur/6))) SI bAfficheSecondes ALORS // Dessine l'aiguille des secondes dLigne(nX, nY, nSX, nSY, iGrisFonce, (nLargeur/50)) FIN
// Dessine l'aiguille des minutes dLigne(nX, nY, nMX, nMY, iGrisFonce, (nLargeur/30)) // Dessine l'aiguille de l'heure dLigne(nX, nY, nHX, nHY, nCouleur, (nLargeur/40))
// Dessine le centre de l'horloge dCercle(nX - 2, nY - 2, nX + 4, nY + 4, iNoir, nCouleur)
@+ Maax°(51)° |
| |
| |
| | | |
|
| | |
| |
| Publicado el 05,octubre 2007 - 12:55 |
Bonjour et merci d'avance pour la fenêtre...
monney-peinture@bluewin.ch
Je vous tiens au courant... Salutations et bonne journée. Sam |
| |
| |
| | | |
|
| | |
| |
| Publicado el 05,octubre 2007 - 13:49 |
Merci à tous pour vos réponses... Particulièrement à Gérard et Maax°(51)° Bon dev... et bonne journée. Sam |
| |
| |
| | | |
|
| | |
| |
| Publicado el 27,noviembre 2007 - 15:09 |
Bonjour,
Je suis également intéressé par votre fenêtre. Si vous pouvez me la faire passé a cette adresse : seb2mars25@hotmail.com
Merçi |
| |
| |
| | | |
|
| | |
| |
| Publicado el 01,octubre 2008 - 16:08 |
Je suis aussi super intéressé. Voilà mon adresse : jerome.langin@gmail.com Merci d'avance ! |
| |
| |
| | | |
|
| | |
| |
| Publicado el 24,abril 2010 - 00:07 |
bonsoir, je cherche une horloge analogique pour l'inserer dans mon application windev, si vous pouvez m'aider ca sera gentil. merci. |
| |
| |
| | | |
|
| | |
| |
| Publicado el 09,junio 2010 - 12:17 |
bonjour, j'ai passé par ce forum en cherchant une solution pour insérer une horloge analogique dans mon application windev. si vous pouvez m'aidez ca sera gentil,merci. SALMA. |
| |
| |
| | | |
|
| | |
| |
| Publicado el 17,noviembre 2019 - 19:09 |
Avec Windev
20 lignes de code dans une procédure et 3 jauges aiguilles et le tour est joué Plus simple tu meurs
Le rendu est tout simplement PARFAIT
N'hésitez pas à me recontacter |
| |
| |
| | | |
|
| | |
| |
| Publicado el 21,noviembre 2019 - 23:29 |
Horloge analogique
20 lignes de code (dans une procédure) et 3 jauges aiguilles (Heure / minutes et seconde) dans votre fenêtre
bernard.andre57@gmail.com
C'est cadeau |
| |
| |
| | | |
|
| | | | |
| | |
|