Tracé d'un sinus

CicinhoRaul Messages postés 221 Date d'inscription lundi 18 juin 2007 Statut Membre Dernière intervention 16 janvier 2009 - 28 sept. 2007 à 17:03
CicinhoRaul Messages postés 221 Date d'inscription lundi 18 juin 2007 Statut Membre Dernière intervention 16 janvier 2009 - 10 oct. 2007 à 13:45
Bonjour à tous  etant débutant en C#  je chercherais un code source permettant de tracer un sinus.  Merci pour votre aide.

4 réponses

cs_niky Messages postés 168 Date d'inscription jeudi 28 juin 2001 Statut Membre Dernière intervention 18 octobre 2008 7
29 sept. 2007 à 22:45
Le sinus se redimensionne lorsque la taille de la fenêtre change :
quand la fenêtre est redimensionnée, l'événement Paint est appelé et comme le sinus dépendant de la largeur et de la hauteur du panel, celui-ci s'adaptera automatiquement.

Tu risques juste d'obtenir un petit problème lorsque le panel est agrandit : seul une partie du panel est redessiné. Pour éviter ce problème, tape la ligne suivante dans l'événement Resize du panel :
    panel1.Invalidate();
Cette ligne force le panel à se redessiner entièrement.

Dernier désagrément que tu vas recontrer, c'est un scintillement de l'affichage pendant le redimensionnement. Si ça te pose vraiment un problème, regardes du côté du double buffering.
1
cs_niky Messages postés 168 Date d'inscription jeudi 28 juin 2001 Statut Membre Dernière intervention 18 octobre 2008 7
28 sept. 2007 à 18:53
Salut,

Pour tracer un sinus, c'est très simple :
- Sur une Form, ajoutes un Panel (nommé par défaut Panel1)
- Dans les événements de Panel1, recherche celui qui s'appelle Paint (normalement, en double-cliquant sur le Panel dans le concepteur, Visual Studio devrait te créer automatiquement l'événement et te placer dans le code).
- Une fois l'événement créé, tapes le code suivant :
private void Panel1_Paint(object sender, PaintEventArgs e)
{

            // e.Graphics permet d'accéder à un objet qui va dessiner sur le panel

            // Efface le contenu du panel en mettant la couleur blanche
            e.Graphics.Clear(System.Drawing.Color.White);

            // Affiche une sinusoïde de couleur bleue
            // Le sinus est affiché en balayant une ligne qui fait la largeur du panel
            // Lorsque le sinus vaut 0, la ligne se trouve à la mi-hauteur du panel (d'où "panel1.Height / 2")
            // Le calcul "i / panel1.Width" permet juste de normaliser la valeur pour l'avoir toujours entre 0 et 1
            // La multiplication par Math.PI * 3 permet d'obtenir un angle qui varie entre 0 et 3pi
            for (int i = 1; i < panel1.Width; i++)
            {
               
                e.Graphics.DrawLine(
                        System.Drawing.Pens.Blue,
                        i - 1,
                        (int)(Math.Sin(((double)i - 1) / panel1.Width * Math.PI * 3) * panel1.Height / 2) + panel1.Height / 2,
                        i,
                        (int)(Math.Sin((double)i / panel1.Width * Math.PI * 3) * panel1.Height / 2) + panel1.Height / 2);
            }
}
0
CicinhoRaul Messages postés 221 Date d'inscription lundi 18 juin 2007 Statut Membre Dernière intervention 16 janvier 2009
29 sept. 2007 à 22:35
Ok niky je vais essayer ce que tu m'as dis.Par contre je voudrais savoir si en agrandissant ma fenetre je reussirais à gérer le sinus??


 


Merci d'avoir porté attention au message.
0
CicinhoRaul Messages postés 221 Date d'inscription lundi 18 juin 2007 Statut Membre Dernière intervention 16 janvier 2009
10 oct. 2007 à 13:45
Ok niky(excuse moi pour la reponse tardive) mais par contre je n'arrive toujours pas à gérer la taille de la fenetre avec le sinus ,je n'arrive pas a appliquer(et j'en suis désolé) ce que tu m'as dit.  

Le but est de tracer le sinus sur toute une grande fenetre

Merci d'avance et encore désolé de te deranger
0
Rejoignez-nous