IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

définition d'un tableau dans une classe [arraylist]


Sujet :

C#

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mai 2008
    Messages : 24
    Points : 22
    Points
    22
    Par défaut définition d'un tableau dans une classe [arraylist]
    Bonjour à tous, je suis débutant en C# et pour le moment j'ai créé un petit programme qui me permet de tracer un graphique (des impulsions) et ensuite de déplacer mes segments de façons verticale pour selectionner l'amplitude voulu. Et voilà mon probléme est que pour faire tout cela j'utilise un tableau un je définis mes valeurs de segments au départ et ensuite les changes au fur et à mesure de mes déplacements mais je fais cela dans mon programme principal sans utiliser de classe or mon parton aimerais que je face mon tableau dans une classe et que je puisse lire et écrire la valeur de mes segments. Quelqu'un pourrait m'aider ou m'indiquer ou trouver de bon tutoriaux pour faire cela car je ne vois pas comment faire ma classe

    voici mon programme principal:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
     
    namespace final_graphic
    {
        public partial class Form1 : Form
        {
            uint mouse_X ;
            uint mouse_Y ;
     
            int SegSelected = -1;
     
            public Segment[] SegmentArray;
     
            public Form1()
            {
                InitializeComponent();
     
                SegmentArray = new Segment[5];
                for (int i = 0; i < SegmentArray.Length; i++)
                {
                    SegmentArray[i] = new Segment(1, 1);
                }
     
                SegmentArray[0].H = 20;
                SegmentArray[0].L = 50;
                SegmentArray[1].H = 50;
                SegmentArray[1].L = 50;
                SegmentArray[2].H = 90;
                SegmentArray[2].L = 50;
                SegmentArray[3].H = 70;
                SegmentArray[3].L = 50;
                SegmentArray[4].H = 30;
                SegmentArray[4].L = 50;
     
            }
     
    //********************* creation of the rectangle ********************//
            private void draw_background(Graphics g)
            {
                Pen BorderPen = new Pen(Color.Black, 2);
     
                Pen MiddlePen = new Pen(Color.Gray, 1);
                MiddlePen.DashStyle = System.Drawing.Drawing2D.DashStyle.Dash;
     
                g.DrawRectangle(BorderPen, 10, 10, 400, 300);
     
                g.DrawLine(MiddlePen, 10, 160, 410, 160);
            }
    //********************************************************************//
     
    //***************** creation of graph with segment ********************//
            private void draw_segment(Graphics g, Segment[] list)
            {
                uint start_X = 10;
                uint start_Y = 10;
     
                uint prev_Y = list[0].H + start_Y;
                uint prev_X = list[0].L + start_X;
     
                Pen SegPen = new Pen(Color.Black, 1);
                Pen SegSelectedPen = new Pen(Color.Pink, 1);
     
                for (int i = 0; i < list.Length; i++)
                {
                    g.DrawLine(SegPen, start_X, prev_Y, start_X, start_Y + list[i].H); // vertical connection lines
                    if (i == SegSelected)
                    {
                        g.DrawLine(SegSelectedPen, start_X, start_Y + list[i].H, start_X + list[i].L, start_Y + list[i].H);
                    }
                    else
                    {
                        g.DrawLine(SegPen, start_X, start_Y + list[i].H, start_X + list[i].L, start_Y + list[i].H);
                    }
                    start_X += list[i].L;
                    prev_Y = start_Y + list[i].H;
                    prev_X = start_X + list[i].L;
                }
            }
    //*********************************************************************//
     
    //*********************** find the nearest segment ********************//
            private void find_nearest_segment(int X, int Y)
            {
                uint start_X = 10;
     
                if ((X < 10) || (X > 390) || (Y < 20) || (Y > 300))
                {
                    SegSelected = -1;
                    return;
                }
                int i = 0;
                while (i < SegmentArray.Length)
                {
                    if (X < start_X + SegmentArray[i].L)
                    {
                        SegSelected = i;
                        return;
                    }
                    start_X += SegmentArray[i].L;
                    i++;
                }
            }
    //*********************************************************************//
     
    //*************** call all function for drawing grpah *****************//
            protected override void OnPaint(PaintEventArgs e)
            {
                draw_background(e.Graphics);
                draw_segment(e.Graphics, SegmentArray);
            }
    //*********************************************************************//
     
            private void Form1_MouseMove(object sender, MouseEventArgs e)
            {
                mouse_X = (uint)e.X;
                mouse_Y = (uint)e.Y;
     
                find_nearest_segment(e.X, e.Y);
     
                if (e.Button == MouseButtons.Left)
                {
                    if (SegSelected != -1)
                    {
                        SegmentArray[SegSelected].H = mouse_Y-10;
                    }
                }
                Invalidate();
            }
     
            private void Form1_MouseDown(object sender, MouseEventArgs e)
            {
                if (e.Button == MouseButtons.Left)
                {
                    if (SegSelected != -1)
                    {
                        SegmentArray[SegSelected].H = mouse_Y - 10;
                    }
                 }
                Invalidate();
            }
        }
    }
    et ma classe pour segment
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    using System;
    using System.Collections;
    using System.Linq;
    using System.Text;
     
    namespace final_graphic
    {
        public class Segment
        {
            public uint H;
            public uint L;
     
            public Segment(uint H0, uint L0)
            {
                H = H0;
                L = L0;
            }
        }
    }

  2. #2
    Membre expérimenté Avatar de Tober
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2007
    Messages
    824
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 824
    Points : 1 381
    Points
    1 381

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mai 2008
    Messages : 24
    Points : 22
    Points
    22
    Par défaut
    Merci Tober encore une fois , je vais lire tous sa maintenant et essayer de trouver mon bonheur

  4. #4
    Membre éclairé
    Inscrit en
    Octobre 2006
    Messages
    587
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Octobre 2006
    Messages : 587
    Points : 706
    Points
    706
    Par défaut
    Encapsule ton champ SegmentArray. Met ton champ en privé et utilise des propriétés pour y accéder.

    Fais attention au type de données uint, Evite d'utiliser ce type de données en public par exemple, car le VB.NET par exemple ne supporte pas ce type de données. Je le précise au cas ou à un moment donné tu voudrais faire de l'interopérabilité avec un autre langage .NET

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mai 2008
    Messages : 24
    Points : 22
    Points
    22
    Par défaut
    Merci pour ce conseil !
    Pour les uint j'ai déjà changé sa car les int tous seul passe très bien

Discussions similaires

  1. Initialisation d'un tableau dans une classe
    Par Invité dans le forum C#
    Réponses: 5
    Dernier message: 26/04/2009, 11h14
  2. [Tableaux] Gestion tableau dans une classe
    Par lolodev dans le forum Langage
    Réponses: 5
    Dernier message: 06/08/2007, 13h19
  3. [Tableaux] Déclaration d'un tableau dans une classe
    Par rochenico dans le forum Langage
    Réponses: 4
    Dernier message: 22/12/2006, 11h29
  4. Comment définir un tableau dans une classe?
    Par Pragmateek dans le forum Collection et Stream
    Réponses: 11
    Dernier message: 30/04/2006, 20h34
  5. tableau dans une classe
    Par blastmanu dans le forum C++
    Réponses: 6
    Dernier message: 18/04/2006, 14h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo