Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2868 connectés 

 


 Mot :   Pseudo :  
  Aller à la page :
 
 Page :   1  2  3  4  5  ..  23  24  25  ..  77  78  79  80  81  82
Auteur Sujet :

[Topic unique] .Net @ Prog

n°2145487
ixemul
Nan mais sans blague ! ⚡
Posté le 12-06-2012 à 14:00:34  profilanswer
 

Reprise du message précédent :

massanu a écrit :


 
Razor/Mvc ca ne change pas grand chose à l’interfaçage et au fait que l'application soit rapide/fluide etc... , me trompe-je ?


 
Si car tu va revoir tes fondammentaux HTML et tu aura toujours en tête "Light is right"  
 

massanu a écrit :


HTML 5 je connais pas (oui j'ai honte) y'a t-il un apport particulier ? Est-ce compatible avec des Webforms aspx ?


Au niveau "dynamique" de la page, oui, tu va te retrouver avec un "Super DHTML". Oublie tout de suite WebForms et WebControls, code tout bien propre en HTML5 avec la syntax RAZOR pour les intéractions page Web <-> Serveur.
 
Pour le HTML5, je ne peux que t'inviter à regarder un peu ce qui se fait sur le Web pour te donner une idée ;)
 
http://mudcu.be/sketchpad/
 
https://www.lucidchart.com/document [...] 15e0b94713
 
http://www.addyosmani.com/resources/googlebox/
 
http://demo.marcofolio.net/css3_bar_chart/
 
http://ie.microsoft.com/testdrive/ [...] eroidBelt/
 
http://peterned.home.xs4all.nl/3d/
 
etc...
 
Bref, google :D


---------------
VA APPRENDRE ET REVIENS QUAND TU SAIS, SINON ABSTIENT TOI C'EST UN GRAND CONSEIL QUE JE TE DONNE... TU ES INCOMPÉTENT ET C'EST UNE RÉALITÉ, TU N'AS RIEN A FAIRE ICI FAUT S'Y CONNAITRE ... -Jojo1998 - RIP - http://tinyurl.com/qc47ftk
mood
Publicité
Posté le 12-06-2012 à 14:00:34  profilanswer
 

n°2145492
massanu
Posté le 12-06-2012 à 14:07:23  profilanswer
 

ixemul a écrit :


 
Si car tu va revoir tes fondammentaux HTML et tu aura toujours en tête "Light is right"  
 


 

ixemul a écrit :


Au niveau "dynamique" de la page, oui, tu va te retrouver avec un "Super DHTML". Oublie tout de suite WebForms et WebControls, code tout bien propre en HTML5 avec la syntax RAZOR pour les intéractions page Web <-> Serveur.
 
Pour le HTML5, je ne peux que t'inviter à regarder un peu ce qui se fait sur le Web pour te donner une idée ;)
 
http://mudcu.be/sketchpad/
 
https://www.lucidchart.com/document [...] 15e0b94713
 
http://www.addyosmani.com/resources/googlebox/
 
http://demo.marcofolio.net/css3_bar_chart/
 
http://ie.microsoft.com/testdrive/ [...] eroidBelt/
 
http://peterned.home.xs4all.nl/3d/
 
etc...
 
Bref, google :D


 
Je vais jetter un oeil du coté de HTML 5 voir ce que ca donne
 
Après je doute que je vais pouvoir adopter MVC étant donné que ce projet va surement devoir être intégré aux projets actuels qui sont des des projets Asp.Net classique...
 
Je vais voir ca si c'est vraiment intéressant j'essayerais de voir si y'a pas moyen d'outrepasser ca
 
Sinon j'ai vu des bibliothèques JS assez intéressantes, tu as un avis dessus ?
 
thx :jap:


---------------
Oui je sais, je suis une merde en orthographe et alors ? Altcoin list: https://docs.google.com/spreadsheet [...] =286417424
n°2145495
ixemul
Nan mais sans blague ! ⚡
Posté le 12-06-2012 à 14:09:17  profilanswer
 

massanu a écrit :


 
Je vais jetter un oeil du coté de HTML 5 voir ce que ca donne
 
Après je doute que je vais pouvoir adopter MVC étant donné que ce projet va surement devoir être intégré aux projets actuels qui sont des des projets Asp.Net classique...
 
Je vais voir ca si c'est vraiment intéressant j'essayerais de voir si y'a pas moyen d'outrepasser ca
 
Sinon j'ai vu des bibliothèques JS assez intéressantes, tu as un avis dessus ?
 
thx :jap:


 
JQuery reste une valeur sûre avec ASP.NET si tu veux rester dans le "standard" ;)


---------------
VA APPRENDRE ET REVIENS QUAND TU SAIS, SINON ABSTIENT TOI C'EST UN GRAND CONSEIL QUE JE TE DONNE... TU ES INCOMPÉTENT ET C'EST UNE RÉALITÉ, TU N'AS RIEN A FAIRE ICI FAUT S'Y CONNAITRE ... -Jojo1998 - RIP - http://tinyurl.com/qc47ftk
n°2145500
massanu
Posté le 12-06-2012 à 14:15:54  profilanswer
 

Oki je vais jeter un oeil a HTML5 voir si il y'a des exemples d'interface utilisateurs riches déjà, ca sera un bon début :)


---------------
Oui je sais, je suis une merde en orthographe et alors ? Altcoin list: https://docs.google.com/spreadsheet [...] =286417424
n°2145506
ixemul
Nan mais sans blague ! ⚡
Posté le 12-06-2012 à 14:25:48  profilanswer
 

massanu a écrit :

Oki je vais jeter un oeil a HTML5 voir si il y'a des exemples d'interface utilisateurs riches déjà, ca sera un bon début :)


 
Formulaire "de base" avec l'article qui va bien :
 
http://dmouronval.developpez.com/t [...] /fichiers/
 
http://dmouronval.developpez.com/t [...] res-html5/


---------------
VA APPRENDRE ET REVIENS QUAND TU SAIS, SINON ABSTIENT TOI C'EST UN GRAND CONSEIL QUE JE TE DONNE... TU ES INCOMPÉTENT ET C'EST UNE RÉALITÉ, TU N'AS RIEN A FAIRE ICI FAUT S'Y CONNAITRE ... -Jojo1998 - RIP - http://tinyurl.com/qc47ftk
n°2145510
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 12-06-2012 à 14:38:24  profilanswer
 

massanu a écrit :

Oki je vais jeter un oeil a HTML5 voir si il y'a des exemples d'interface utilisateurs riches déjà, ca sera un bon début :)


Pour tout le côté interface client riche avec des jouis contrôles, t'as jQuery UI qui est très bien et qui propose plein de trucs.
Aussi, pour les bonnes pratiques (toujours côté client), mate le topic Blabla@Web.


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°2145580
TotalRecal​l
Posté le 12-06-2012 à 20:11:04  profilanswer
 

Pour ce genre d'appli, webform est vraiment vraiment à éviter si tu peux. A moins de ne rien utiliser des composants d'origine ( :sarcastic: ) et de tout réécrire à coup de webcontrols générant du js ( :fouyaya: ) tu n'iras nulle part.

 

Si tu peux partir sur du MS MVC (Razor tant qu'à faire, même si on s'en tape un peu) et un framework JS type jquery UI ou un de ses 10 concurrents tu peux arriver à un truc super.

 

Pour CSS3/HTML 5 pense aux contraintes de compatibilité avant de te jeter dedans. A moins que ton client ne soit à jour en terme de navigateur (m'étonnerait, les clients sont plus volontiers sous IE6 que FF 13) évite d'en être dépendant. En js tu peux déjà faire pas mal de trucs sympas.

Message cité 1 fois
Message édité par TotalRecall le 12-06-2012 à 20:11:53

---------------
Topic .Net - C# @ Prog
n°2145585
ixemul
Nan mais sans blague ! ⚡
Posté le 12-06-2012 à 20:41:53  profilanswer
 

IE6 est de plus en plus abandonné depuis l'année dernière (depuis que MS à indiqué qu'il arrêtait le support)


---------------
VA APPRENDRE ET REVIENS QUAND TU SAIS, SINON ABSTIENT TOI C'EST UN GRAND CONSEIL QUE JE TE DONNE... TU ES INCOMPÉTENT ET C'EST UNE RÉALITÉ, TU N'AS RIEN A FAIRE ICI FAUT S'Y CONNAITRE ... -Jojo1998 - RIP - http://tinyurl.com/qc47ftk
n°2145590
massanu
Posté le 12-06-2012 à 20:51:46  profilanswer
 

TotalRecall a écrit :

Pour ce genre d'appli, webform est vraiment vraiment à éviter si tu peux. A moins de ne rien utiliser des composants d'origine ( :sarcastic: ) et de tout réécrire à coup de webcontrols générant du js ( :fouyaya: ) tu n'iras nulle part.  
 
Si tu peux partir sur du MS MVC (Razor tant qu'à faire, même si on s'en tape un peu) et un framework JS type jquery UI ou un de ses 10 concurrents tu peux arriver à un truc super.
 
Pour CSS3/HTML 5 pense aux contraintes de compatibilité avant de te jeter dedans. A moins que ton client ne soit à jour en terme de navigateur (m'étonnerait, les clients sont plus volontiers sous IE6 que FF 13) évite d'en être dépendant. En js tu peux déjà faire pas mal de trucs sympas.


 
Mais quelles différences entre utiliser WebForms + Bibliothèque JS et MVC + Bibliothèque JS ?


---------------
Oui je sais, je suis une merde en orthographe et alors ? Altcoin list: https://docs.google.com/spreadsheet [...] =286417424
n°2145591
Jean-Kevai​n
Posté le 12-06-2012 à 20:52:34  profilanswer
 

massanu a écrit :


 
Mais quelles différences entre utiliser WebForms + Bibliothèque JS et MVC + Bibliothèque JS ?


Optimisation :o
(postbacks, multiples controles imbriquées, etc.)

Message cité 1 fois
Message édité par Jean-Kevain le 12-06-2012 à 20:53:05
mood
Publicité
Posté le 12-06-2012 à 20:52:34  profilanswer
 

n°2145601
nucl3arfl0
Better Call Saul
Posté le 12-06-2012 à 22:22:12  profilanswer
 

+1 pour Asp.NET avec Razor et surtout jQuery pour tes requêtes Ajax.

n°2145604
massanu
Posté le 12-06-2012 à 23:06:20  profilanswer
 

Jean-Kevain a écrit :


Optimisation :o
(postbacks, multiples controles imbriquées, etc.)


 
Euh.. je n'ai pas saisie la...
 
Si tu as un lien pour m'expliquer ca, car je suis a l'aise en Asp.net  et vu que MVC je ne connais pas vraiment, je souhaiterais savoir si l'investissement en temps sur ce projet a prendre MVC en main vaux vraiment le coup :)


---------------
Oui je sais, je suis une merde en orthographe et alors ? Altcoin list: https://docs.google.com/spreadsheet [...] =286417424
n°2145621
Jean-Kevai​n
Posté le 13-06-2012 à 06:02:24  profilanswer
 

Ben regarde le code html généré par les contrôles Webforms.
C'est une véritable usine à gaz :/

n°2145632
massanu
Posté le 13-06-2012 à 09:26:40  profilanswer
 

Jean-Kevain a écrit :

Ben regarde le code html généré par les contrôles Webforms.
C'est une véritable usine à gaz :/


 
Ha oui ca je suis d'accord :lol:
 
Donc la différence se situe a ce niveau la, principalement, donc la liaison avec JS est plus efficace...


---------------
Oui je sais, je suis une merde en orthographe et alors ? Altcoin list: https://docs.google.com/spreadsheet [...] =286417424
n°2145803
TotalRecal​l
Posté le 14-06-2012 à 12:55:17  profilanswer
 

Non. Pas seulement.  
As tu seulement fait du MS MVC ? Si ça n'est pas le cas prend simplement quelques heures pour découvrir conceptuellement comment ça s'utilise et tu pourras juger, sinon je sens que tu resteras réfractaire à nos arguments puisque le contexte te porte plutôt à capitaliser sur ton expérience de webform.


---------------
Topic .Net - C# @ Prog
n°2145826
massanu
Posté le 14-06-2012 à 14:42:37  profilanswer
 

TotalRecall a écrit :

Non. Pas seulement.  
As tu seulement fait du MS MVC ? Si ça n'est pas le cas prend simplement quelques heures pour découvrir conceptuellement comment ça s'utilise et tu pourras juger, sinon je sens que tu resteras réfractaire à nos arguments puisque le contexte te porte plutôt à capitaliser sur ton expérience de webform.


 
Oui j'ai déjà touché par curiosité personnelle :)
 
Et la seule chose qui me viens réellement comme différence est vraiment le code rendu par MVC qui est du "véritable" HTML
 
Sinon je ne vois pas en quoi il y'aurais un réel gain de vitesse/fluidité par rapport à des WebForms
 
Je suis totalement ouvert sinon je n'aurais pas posé la question :jap:


---------------
Oui je sais, je suis une merde en orthographe et alors ? Altcoin list: https://docs.google.com/spreadsheet [...] =286417424
n°2145828
ixemul
Nan mais sans blague ! ⚡
Posté le 14-06-2012 à 14:46:38  profilanswer
 

massanu a écrit :


Sinon je ne vois pas en quoi il y'aurais un réel gain de vitesse/fluidité par rapport à des WebForms


 
La réponse, tu la donnes toi même, avec MVC tu garde la maitrise sur le HTML généré, ce qui n'est pas le cas avec WebForms ;)
 
Comme tu maitrise le HTML généré, libre à toi de le rendre le plus léger possible pour qu'il réponde à ton besoin ;)


---------------
VA APPRENDRE ET REVIENS QUAND TU SAIS, SINON ABSTIENT TOI C'EST UN GRAND CONSEIL QUE JE TE DONNE... TU ES INCOMPÉTENT ET C'EST UNE RÉALITÉ, TU N'AS RIEN A FAIRE ICI FAUT S'Y CONNAITRE ... -Jojo1998 - RIP - http://tinyurl.com/qc47ftk
n°2145913
ov3rflow
How Do You Do, Fellow Kids?
Posté le 15-06-2012 à 09:56:10  profilanswer
 

Une appli MVC est plus réactive, car il n'ya pas tout le viewstate (qui grossi trés trés vite) à se trimballer à chaque aller-retour, (plus tout ce que ça implique) et le page cycle assez complexe.
 
 
 
Autre sujet pour ma part, vous avez un hébergement à me conseiller pour du .NET + Base SQL Serveur ?
 
J'ai trouvé Ikoula pour le moment à 4€ HT par mois.


Message édité par ov3rflow le 15-06-2012 à 09:57:05
n°2145915
massanu
Posté le 15-06-2012 à 10:47:05  profilanswer
 

Ha ok merci je vois mieux ! :D
 
Merci pour vos conseils, je pense que ca pourras également servir à d'autres personnes que moi :jap:


Message édité par massanu le 15-06-2012 à 10:47:34

---------------
Oui je sais, je suis une merde en orthographe et alors ? Altcoin list: https://docs.google.com/spreadsheet [...] =286417424
n°2145989
nucl3arfl0
Better Call Saul
Posté le 15-06-2012 à 19:45:45  profilanswer
 

Hello,

 

je fais actuellement des tests de concurrences dans une base de données sur SQL Server, et malgré mon expérience dans le domaine il y a des choses que je ne comprends vraiment pas (ne vous inquiétez pas, je vais parler "un peu" de .NET).

 

Je présente vite fait mes tables (de tests) :
Table_A : ID, Value
Table_B : ID, Value (la même que A), ID_A

 

Table_A peut avoir plusieurs Table_B.

 

J'utilise le framework Entities, mais j'ai le même problème sous Hibernate (en java).
J'ai une architecture N-Tier, où mon contexte est isolé pour chaque action.

 

Dans ma classe qui gère Table_A, j'ai cette logique pour le listing :

Code :
  1. public List<Table_A> List()
  2. {
  3. using(MonContext mc = new MonContext())
  4. {
  5.  return mc.Table_A.Include("Table_B" ).ToList();
  6. }
  7. }


A partir de là, j'ai une méthode qui me permet de récupérer une Table_A à partir d'un ID, et une méthode pour mettre à jour une Table_A à partir de son ID et des valeurs.
Quand je veux mettre à jour mon entité Table_A, dans un même contexte, je récupère la Table_A avec ses Table_B, je mets à jour Value, idem pour ses B, et je fais SaveChanges().

 

Et c'est là que le bordel commence.
J'ai 2 threads en parallèle (qu'on nommera respectivement T1 et T2) :
- 1 qui liste tous les éléments Table_A + ses B, et qui vérifie pour chaque Value de A = Value de chacun de ses B (test de cohérence) => en boucle
> La vérification des éléments se fait hors contexte (après le using, donc les éléments sont détachés de la BDD)
- 1 qui met à jour au hasard une Table_A et ses B => en boucle
Je rappelle que la portée du contexte est très courte.

 

J'ai plusieurs problèmes.
Par défaut, la lecture dans T1 se fait en "Read Commited".
La mise à jour dans T2 se fait en "Serializable".

 

Dans ce scénario là, il y a toujours un moment où j'ai une décohérence entre la valeur de A et celle de B => ce n'est pas bon, il faut absolument que pour un A, ses B soient cohérents.
Que les A suivants ou précédents changent en cours de route, ce n'est pas grave.
Pourtant, en Read Commited, il n'a pas le droit de lire tant que ce n'est pas commité.

 

Autre scénario, j'ai fait le test en mettant la lecture en "Readable". Cela marche mieux, par contre, ça me ralentit énormément les processus à cause de la synchronisation.
Et très souvent, je me retrouve avec des transactions tuées par SQL, alors que le timeout n'est même pas expiré !

 

J'ai fait des tests croisés, cad uniquement .NET, puis que Hibernate, puis un mix des deux (l'un écrit, l'autre lit, et vice-versa).

 

Vous avez déjà été confronté à ce genre de problème ?
Perso j'ai du mal à comprendre comment cela fonctionne, et donc comment le résoudre.

 

NB: c'est dans le cadre du développement d'une application permettant de supporter des grosses volumétries et accès.


Message édité par nucl3arfl0 le 15-06-2012 à 19:50:24
n°2146585
nucl3arfl0
Better Call Saul
Posté le 20-06-2012 à 15:29:20  profilanswer
 

Alors pour information, pour ceux que ça intéresse, j'ai trouvé comme résoudre mon problème.
J'ai besoin de données cohérentes, mais pas forcément la toute dernière version.
En passant sur le SQL Server le mode READ_COMMITTED_SNAPSHOT à ON, j'ai plus de blocage.
Bon par contre, y a des désagréments de cette solution, qui peuvent être acceptables, ou non selon ce que l'on recherche ou selon les contraintes.

n°2147610
massanu
Posté le 29-06-2012 à 22:27:32  profilanswer
 

Salut a tous ! :hello:
 
Suite aux questions que je vous avaient posées très récemment sur le choix de la technologie pour une interface riche/fluide/légère vous m'aviez conseillé de me mettre à MVC et je vous ai écouté :jap:
 
Le dévelopement se passe assez bien pour le moment, même si la multiplication des appels Ajax, avec de nombreuses Partial View et surtout un bll (business logic layer) en .net 3.5 dans une seule DLL est assez chiant à gérer.
 
Cependant la question est différente cette fois :)
 
 
Je souhaiterais gérer l'accès concurrentiel à certaines View. Je m'explique :
 
- Utilisateur 1 veux accède à un questionnaire. Il répond à des questions classées par thèmes.
 
- Utilisateur 2 se connecte au même questionnaire (son collègue de travail par exemple) avec un autre login.
 
J'aimerais pouvoir bloquer l'accès à une question (partial View) pour qu'une seule personne à la fois y réponde.
 
J'ai regardé du coté de SignalR, j'ai testé mais cela ne correspond pas à mes attentes.
 
Les problematiques sont multiples :
 
- Plusieurs utilisateurs peuvent se connecter au même questionnaire.
- Le lock doit s'activer à l'ouverture de la question
- Le UnLock quand il valide ses réponses ou dés qu'il "sort" de la question  
    -> Comment gérer ca ? Vu que c'est un navigateur il peut la quitter en changeant de page, en la validant, en fermant son onglet, en se déloguant  ou en eteignant son ordinateur par exemple
 
- De plus j'imagine que ces informations étant partagées par plusieurs instances de navigateur il va falloir stocker les informations de présences au niveau de l'application.
    -> Utiliser la base de données ? Cela fait beaucoup d'aller-retour non ?
    -> Stocker dans httpcontext.Application ? Je crois avoir lu que ce n'est pas terrible de stocker des infos la dedans
 
 
Bref un petit casse tête difficile à régler quand on ne connait pas vraiment les capacités de MVC3 et de ce qui peux se faire actuellement
 
 
Désolé pour ce long post, et les fautes d'orthographes :p
 
Merci d'avance :jap:


Message édité par massanu le 30-06-2012 à 09:49:38

---------------
Oui je sais, je suis une merde en orthographe et alors ? Altcoin list: https://docs.google.com/spreadsheet [...] =286417424
n°2147619
ixemul
Nan mais sans blague ! ⚡
Posté le 30-06-2012 à 09:04:45  profilanswer
 

Tu peux aussi gérer ça dans une classe en singleton, à condition que tu ne tourne pas sur un IIS en load balancing.


---------------
VA APPRENDRE ET REVIENS QUAND TU SAIS, SINON ABSTIENT TOI C'EST UN GRAND CONSEIL QUE JE TE DONNE... TU ES INCOMPÉTENT ET C'EST UNE RÉALITÉ, TU N'AS RIEN A FAIRE ICI FAUT S'Y CONNAITRE ... -Jojo1998 - RIP - http://tinyurl.com/qc47ftk
n°2147620
massanu
Posté le 30-06-2012 à 09:51:07  profilanswer
 

ixemul a écrit :

Tu peux aussi gérer ça dans une classe en singleton, à condition que tu ne tourne pas sur un IIS en load balancing.


 
Oui pour le stockage de l'information j'ai plusieurs idées :
 
- Directement dans une table de la BDD avec un couple User/idQuestion
- Dans une base NoSQL
- Dans un fichier texte etc...
 
1°) Il faut choisir la plus performante
 
2°) Le plus compliqué à gérer reste les cas d'utilisation car on est sur du web.
 
Trouver tout les evenemens qui déclenche un lock ou un un-lock, et surtout trouver comment les prendre en charge
 
- LOCK :
- Ouverture de la question
 
- UN-LOCK :
- Validation de la question (click bouton)
- Fermeture de son navigateur
- Changement de question sans la valider
- Logout
- Expiration de Session
- etc...


Message édité par massanu le 30-06-2012 à 09:54:30

---------------
Oui je sais, je suis une merde en orthographe et alors ? Altcoin list: https://docs.google.com/spreadsheet [...] =286417424
n°2147672
TotalRecal​l
Posté le 01-07-2012 à 13:14:51  profilanswer
 

Pour la gestion du verrou, comme disait ixemul une gestion en singleton suffit (avantages : simple à implémenter, presque indépendant du contexte web). Tu peux utiliser comme "clé" pour identifier ton utilisateur l'objet métier utilisateur si tu en gères un ou un truc plus bas niveau comme le sessionid.

 

Pour le lock c'est un cas métier. Pour le unlock, le logout / validation question / changement de question sont aussi des événements métiers (interactions avec l'utilisateur) que tu dois gérer.
Pour l'expiration de session regarde du côté de l'événement Session_End et pour la fermeture du navigateur un onbeforeunload() qui appelle une webmethod sur le body de ta page devrait aider.
Il y a des cas où Session_End n'est pas levé, mais ils ne devraient pas poser de souci pour ton usage si tu gères tes verrous en mémoire et pas en base de données. Dans le doute tu peux aussi gérer une durée de vie sur les verrous.


Message édité par TotalRecall le 01-07-2012 à 13:17:58

---------------
Topic .Net - C# @ Prog
n°2148658
Bakk15
لا إله إلا الله محمد رسول الله
Posté le 09-07-2012 à 12:57:09  profilanswer
 

Bonjour.

 

j'ai récupéré le code d'une horloge sur le net.
J'aimerai pouvoir afficher sur le tour du cercle de l'horloge un point en fonction de son heure.

 

L'horloge est en 24 heures avec seulement l'aiguille des heures.
J'ai un point à 12h00 par exemple, j'aimerai donc afficher un texte comme 12, en bas donc (à la place du 6heures )

 

j'ai plusieurs point comme cela à rajouter.

 

Mais je comprends pas trop la classe Drawing.

 

voici le code original qui affiche de 1 à 12 heures et qui ajoute les barres
pour les globales

Code :
  1. private const double HPI = Math.PI / 2;//La moitié de pi
  2.  private const double SPI = Math.PI / 6;//Le sixième de pi
  3.  private const double TPI = Math.PI / 30;//Le trentième de pi


Code :
  1. //On trace les chiffres & les barres
  2.             float tx,ty;
  3.   //Si on ne doit pas dessiner ni les chiffres,
  4.   //ni les barres, on économise des ressources en évitant le for
  5.             if(_affChiffresHeures || _affBarresHeures || _affBarresSecondes){
  6.             for (int n = 0; n < 60; n++)
  7.             {
  8.                 double cosres = CentreX * Math.Cos(n * TPI - HPI);
  9.                 double sinres = CentreY * Math.Sin(n * TPI - HPI);
  10.                 if (n % 5 == 0)
  11.                 {
  12.                     int i = n / 5;
  13.                     if (n == 0) i = 12;
  14.                     SizeF longueur = g.MeasureString(i.ToString(), Font);
  15.                     tx = (float)(CentreX + 0.9 * CentreX * Math.Cos(i * SPI - HPI));
  16.                     ty = (float)(CentreY + 0.9 * CentreY * Math.Sin(i * SPI - HPI));
  17.                                 if(_affChiffresHeures)
  18.                                     g.DrawString(i.ToString(),Font,_chiffres,tx-longueur.Width/2,ty-longueur.Height/2);
  19.                                 if(_affBarresHeures)
  20.                     g.DrawLine(_barresHeures,(float)(CentreX + 0.76 * cosres),(float)(CentreY + 0.76 * sinres),(float)(CentreX + 0.84 * cosres), (float)(CentreY + 0.84 * sinres));
  21.                 }
  22.                    else if (_affBarresSecondes)
  23.                         g.DrawLine(_barresSecondes,(float)(CentreX + 0.78 * cosres),(float)(CentreY + 0.78 * sinres),(float)(CentreX + 0.82 * cosres), (float)(CentreY + 0.82 * sinres));
  24.                 }
  25.                 }
 

en fait, je n'arrive pas à déchiffrer le code pour le reproduire selon ce que je veux


Message édité par Bakk15 le 09-07-2012 à 12:58:18
n°2148674
ixemul
Nan mais sans blague ! ⚡
Posté le 09-07-2012 à 13:38:33  profilanswer
 

pour afficher quelque chose à une "heure" donnée, il faut que tu dessine "hors boucle" à l'heure désirée en reprenant ce code :
 

Code :
  1. double cosres = CentreX * Math.Cos(heure_voulue * TPI - HPI);
  2. double sinres = CentreY * Math.Sin(heure_voulue * TPI - HPI);


 
tu pose heure_voulue=30 pour l'aiguille à "6h" (donc le 12h que tu veux sur une H24, c.a.d l'aiguille vers le bas)
 
et du dessine le texte que tu veux (au hasard, "42", avec la méthode DrawString en précisant la Brush que tu veux (_BrushCustom).
 
La méthode MeasureString, va te permettre de mesurer la longueur en pixel du texte afin de le centrer à la position voulue ;)  
 

Code :
  1. SizeF longueur = g.MeasureString("42", Font);
  2. g.DrawString("42",Font,_BrushCustom,tx-longueur.Width/2,ty-longueur.Height/2);



---------------
VA APPRENDRE ET REVIENS QUAND TU SAIS, SINON ABSTIENT TOI C'EST UN GRAND CONSEIL QUE JE TE DONNE... TU ES INCOMPÉTENT ET C'EST UNE RÉALITÉ, TU N'AS RIEN A FAIRE ICI FAUT S'Y CONNAITRE ... -Jojo1998 - RIP - http://tinyurl.com/qc47ftk
n°2148679
Bakk15
لا إله إلا الله محمد رسول الله
Posté le 09-07-2012 à 14:14:32  profilanswer
 

impeccable, merci beaucoup :jap:

n°2148685
Bakk15
لا إله إلا الله محمد رسول الله
Posté le 09-07-2012 à 14:42:34  profilanswer
 

J'ai un autre soucis, mais méthodologiques là :D
 
comment convertir un DateTime au format HH:mm en int qui serait la position
 
style 12:00 serait à 180° ( 15° par heure )
et 18:00 à 270°

n°2148691
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 09-07-2012 à 14:57:47  profilanswer
 

Balance tout en minutes et divise ? Genre 12:00 = 720 puis division par 4 et en route.

Message cité 1 fois
Message édité par Taiche le 09-07-2012 à 14:58:22

---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°2148748
Bakk15
لا إله إلا الله محمد رسول الله
Posté le 09-07-2012 à 18:46:42  profilanswer
 

ixemul a écrit :

pour afficher quelque chose à une "heure" donnée, il faut que tu dessine "hors boucle" à l'heure désirée en reprenant ce code :

 
Code :
  1. double cosres = CentreX * Math.Cos(heure_voulue * TPI - HPI);
  2. double sinres = CentreY * Math.Sin(heure_voulue * TPI - HPI);
 

tu pose heure_voulue=30 pour l'aiguille à "6h" (donc le 12h que tu veux sur une H24, c.a.d l'aiguille vers le bas)

 

et du dessine le texte que tu veux (au hasard, "42", avec la méthode DrawString en précisant la Brush que tu veux (_BrushCustom).

 

La méthode MeasureString, va te permettre de mesurer la longueur en pixel du texte afin de le centrer à la position voulue ;)

 
Code :
  1. SizeF longueur = g.MeasureString("42", Font);
  2. g.DrawString("42",Font,_BrushCustom,tx-longueur.Width/2,ty-longueur.Height/2);



 

j'ai bien compris le principe. Mais le tx et ty, il y a une varible dedans que je n'arrive pas à "comprendre"
int i;

 
Code :
  1. if (n % 5 == 0)
  2.                 {
  3. int i = n / 5;
  4.                     if (n == 0) i = 12;
  5.                     SizeF longueur = g.MeasureString(i.ToString(), Font);
  6.                     tx = (float)(CentreX + 0.9 * CentreX * Math.Cos(i * SPI - HPI));
  7.                     ty = (float)(CentreY + 0.9 * CentreY * Math.Sin(i * SPI - HPI));
  8. //....
  9. }
 

car j'ai besoin de ce tx et ty pour dessiner la position
dans son exemple, c'est le position des heures.

 
Taiche a écrit :

Balance tout en minutes et divise ? Genre 12:00 = 720 puis division par 4 et en route.

 

c'est ce que j'ai fait, merci beaucoup
un split puis h*60 + m, tout simplement :jap:

Message cité 1 fois
Message édité par Bakk15 le 09-07-2012 à 18:48:06
n°2148766
Bakk15
لا إله إلا الله محمد رسول الله
Posté le 09-07-2012 à 23:23:25  profilanswer
 

Pour compléter, j'ai plus ou moins réussi. Je fais donc un produit en crois pour trouver la correspondance sur 60
 
1440 min = 60
240 min = x
 
240*60/1440  
 
dans ce cas j'ai 10, mais ayant testé le positionnement manuel
comme ixemul me l'a montré avec 30, en dessous de 13, cela ne marche pas. Et pareil de l'autre côté de l'horloge.
Au dessus de 47, cela bug.
 

Code :
  1. tx = (float)(CentreX + 0.9 * CentreX * Math.Cos(45 * SPI - HPI));
  2.             ty = (float)(CentreY + 0.9 * CentreY * Math.Sin(45 * SPI - HPI));


 

n°2148833
ixemul
Nan mais sans blague ! ⚡
Posté le 10-07-2012 à 10:44:16  profilanswer
 

Bakk15 a écrit :


 
j'ai bien compris le principe. Mais le tx et ty, il y a une varible dedans que je n'arrive pas à "comprendre"
int i;
 

Code :
  1. if (n % 5 == 0)
  2.                 {
  3. int i = n / 5;
  4.                     if (n == 0) i = 12;
  5.                     SizeF longueur = g.MeasureString(i.ToString(), Font);
  6.                     tx = (float)(CentreX + 0.9 * CentreX * Math.Cos(i * SPI - HPI));
  7.                     ty = (float)(CentreY + 0.9 * CentreY * Math.Sin(i * SPI - HPI));
  8. //....
  9. }


 
car j'ai besoin de ce tx et ty pour dessiner la position
dans son exemple, c'est le position des heures.
 


 
la variable "i" en effet permet de reperer uniquement la position des heures (n/5 quand n%5 ==0 est un nombre entier compris en 1 et 12 quand n varie de 0 à 60)
 
pour "simplifier" et surtout "optimiser" le calcul, je te conseille de stocker tes cosinus et sinus dans des tables statiques, ça évitera de calculer les 2 tables à chaque rafraichissement (on peut avoir des CPU à wattmille Ghz, c'est pas pour autant qu'il faut abuser)
 
Donc :
 
en global tu met ça :
 

Code :
  1. private const double HPI = Math.PI / 2;//La moitié de pi
  2.         private const double SPI = Math.PI / 6;//Le sixième de pi
  3.         private const double TPI = Math.PI / 30;
  4.        
  5.         //Init de la table de cosinus
  6.         public static readonly double[] CosTable = ((Func<double[]> )(() =>
  7.         {
  8.             double[] cosInit = new double[60];
  9.             for (int i = 0; i < 60; i++)
  10.                 cosInit[i] = Math.Cos(i*TPI-HPI);
  11.             return cosInit;
  12.         }))();
  13.         //Init de la table de sinus
  14.         private static readonly double[] SinTable = ((Func<double[]> )(() =>
  15.         {
  16.             double[] cosInit = new double[60];
  17.             for (int i = 0; i < 60; i++)
  18.                 cosInit[i] = Math.Sin(i * TPI - HPI);
  19.             return cosInit;
  20.         }))();


 
Ensuite le code deviendra ça :
 

Code :
  1. {
  2.             //On trace les chiffres & les barres
  3.             float tx, ty;
  4.             //Si on ne doit pas dessiner ni les chiffres,
  5.             //ni les barres, on économise des ressources en évitant le for
  6.             //Tips ixemul : on économise encore plus en passant par une table préalablement chargée
  7.             if (_affChiffresHeures || _affBarresHeures || _affBarresSecondes)
  8.             {
  9.                 for (int n = 0; n < 60; n++)
  10.                 {
  11.                     double cosres = CentreX * CosTable[n];
  12.                     double sinres = CentreY * SinTable[n];
  13.                     if (n % 5 == 0)
  14.                     {
  15.                         int i = n / 5;
  16.                         if (n == 0) i = 12;
  17.                         SizeF longueur = g.MeasureString(i.ToString(), Font);
  18.                         tx = (float)(CentreX + 0.9 * CentreX * CosTable[i];
  19.                         ty = (float)(CentreY + 0.9 * CentreY * SinTable[i];
  20.                         if (_affChiffresHeures)
  21.                             g.DrawString(i.ToString(), Font, _chiffres, tx - longueur.Width / 2, ty - longueur.Height / 2);
  22.                         if (_affBarresHeures)
  23.                             g.DrawLine(_barresHeures, (float)(CentreX + 0.76 * cosres), (float)(CentreY + 0.76 * sinres), (float)(CentreX + 0.84 * cosres), (float)(CentreY + 0.84 * sinres));
  24.                     }
  25.                     else if (_affBarresSecondes)
  26.                         g.DrawLine(_barresSecondes, (float)(CentreX + 0.78 * cosres), (float)(CentreY + 0.78 * sinres), (float)(CentreX + 0.82 * cosres), (float)(CentreY + 0.82 * sinres));
  27.                 }
  28.             }
  29.             // j'affiche _monTexte avec _maBrush pour _maValeur comprise entre 0 et 60 exclu en int
  30.             if (_affMonTexteOuJeVeux)
  31.             {
  32.                 float posMonTexteX = (float)(CentreX + 0.85 * CentreX * CosTable[_maValeur]);
  33.                 float posMonTexteY = (float)(CentreY + 0.85 * CentreY * SinTable[_maValeur]);
  34.                 SizeF longueurMonTexte = g.MeasureString(_monTexte.ToString(), Font);
  35.                 g.DrawString(_monTexte.ToString(), Font, _maBrushQuiVaBien, posMonTexteX - longueur.Width / 2, posMonTexteY - longueur.Height / 2);
  36.             }
  37.         }


 
 


---------------
VA APPRENDRE ET REVIENS QUAND TU SAIS, SINON ABSTIENT TOI C'EST UN GRAND CONSEIL QUE JE TE DONNE... TU ES INCOMPÉTENT ET C'EST UNE RÉALITÉ, TU N'AS RIEN A FAIRE ICI FAUT S'Y CONNAITRE ... -Jojo1998 - RIP - http://tinyurl.com/qc47ftk
n°2148877
Bakk15
لا إله إلا الله محمد رسول الله
Posté le 10-07-2012 à 14:10:47  profilanswer
 

merci beaucoup, c'est vraiment gentil d'avoir pris ce temps là.
Je ne connais pas du tout cette syntaxe  

Code :
  1. public static readonly double[] CosTable = ((Func<double[]> )(() =>


 
J'ai d'ailleurs un soucis avec Func, c'est quelle directive using ?
 
en tout cas merci

n°2148881
ixemul
Nan mais sans blague ! ⚡
Posté le 10-07-2012 à 14:16:40  profilanswer
 

Bakk15 a écrit :

merci beaucoup, c'est vraiment gentil d'avoir pris ce temps là.
Je ne connais pas du tout cette syntaxe  

Code :
  1. public static readonly double[] CosTable = ((Func<double[]> )(() =>


 
J'ai d'ailleurs un soucis avec Func, c'est quelle directive using ?
 
en tout cas merci


 
t'utilise quelle version du framework ?


---------------
VA APPRENDRE ET REVIENS QUAND TU SAIS, SINON ABSTIENT TOI C'EST UN GRAND CONSEIL QUE JE TE DONNE... TU ES INCOMPÉTENT ET C'EST UNE RÉALITÉ, TU N'AS RIEN A FAIRE ICI FAUT S'Y CONNAITRE ... -Jojo1998 - RIP - http://tinyurl.com/qc47ftk
n°2148890
Bakk15
لا إله إلا الله محمد رسول الله
Posté le 10-07-2012 à 14:58:55  profilanswer
 

4.0.30319 ( pas sur que c'est ce que tu demandes )
Trouvé dans le registre NEt framework setup/NDP/V4/client

n°2148892
ixemul
Nan mais sans blague ! ⚡
Posté le 10-07-2012 à 15:02:33  profilanswer
 

Bakk15 a écrit :

4.0.30319 ( pas sur que c'est ce que tu demandes )
Trouvé dans le registre NEt framework setup/NDP/V4/client


 
C'est bon alors, Func<> est apparu avec le framework 3.0...
 
T'es sûre que tu compile bien pour .NET 3.5 ou 4.0 ?
 
Sinon, au pire, tu crées une méthode statique private pour faire le bouleau d'init de ton tableau static readonly, ça marchera aussi bien ;)


---------------
VA APPRENDRE ET REVIENS QUAND TU SAIS, SINON ABSTIENT TOI C'EST UN GRAND CONSEIL QUE JE TE DONNE... TU ES INCOMPÉTENT ET C'EST UNE RÉALITÉ, TU N'AS RIEN A FAIRE ICI FAUT S'Y CONNAITRE ... -Jojo1998 - RIP - http://tinyurl.com/qc47ftk
n°2148901
Bakk15
لا إله إلا الله محمد رسول الله
Posté le 10-07-2012 à 15:53:25  profilanswer
 

ixemul a écrit :


 
C'est bon alors, Func<> est apparu avec le framework 3.0...
 
T'es sûre que tu compile bien pour .NET 3.5 ou 4.0 ?
 
Sinon, au pire, tu crées une méthode statique private pour faire le bouleau d'init de ton tableau static readonly, ça marchera aussi bien ;)


 
vu que c'était une base d'un truc pris sur le web, il était en 2.0
 
maitenant que je l'ai passé en 4.0
 
j'ai cela : Avertissement 1 Le projet 'Clock' ne peut pas être référencé. Le projet référencé cible une version de framework supérieure (4.0)  
mais Func fonctionne a présent
 

n°2148905
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 10-07-2012 à 15:58:13  profilanswer
 

Ouais, probablement que les autres projets de ta solution compilent en 2.0, donc comme ils référencent le projet en 4.0, ba ça râle [:dawao] Passe tout le monde en 4.0 et hop [:dawao]


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°2148906
ixemul
Nan mais sans blague ! ⚡
Posté le 10-07-2012 à 16:03:00  profilanswer
 

hop [:dawao]


---------------
VA APPRENDRE ET REVIENS QUAND TU SAIS, SINON ABSTIENT TOI C'EST UN GRAND CONSEIL QUE JE TE DONNE... TU ES INCOMPÉTENT ET C'EST UNE RÉALITÉ, TU N'AS RIEN A FAIRE ICI FAUT S'Y CONNAITRE ... -Jojo1998 - RIP - http://tinyurl.com/qc47ftk
n°2148907
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 10-07-2012 à 16:03:18  profilanswer
 

On dawate ? [:dawa]


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4  5  ..  23  24  25  ..  77  78  79  80  81  82

Aller à :
Ajouter une réponse
 

Sujets relatifs
service web REST en VB.NET HeySpreadRequete Access avec paramètres, éxécutée en VB .Net
impersonalisation sous ASP.NET[Topic Unique] les blagues pourries de harko et florentg
Generation d'un GIF en ASP.NETAppeler un service web .NET sécurisé en Java
Prog Visual Basic "periodicité"[Oracle] Temps d'execution de requete tres long par rapport au .NET
[VB.NET] Lister des imprimantes réseauxFusion de résultats de requêtes dans une unique Table
Plus de sujets relatifs à : [Topic unique] .Net @ Prog


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)