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 :

Problème effacement après Graphics.DrawString


Sujet :

C#

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 107
    Par défaut Problème effacement après Graphics.DrawString
    Bonjour,

    Je n'ai pas trouver de reponses dans les forums, peut etre pouvez-vous m'aider.

    Je voulais savoir si il y avait un moyen d'effacer une chaine de caractere que l'on a dessiner avec Graphics.DrawString par exemple, ou alors faut-il toujours efffacer la totalité de mon panel.

    En fait je dois afficher une seule chaine de caractere toutes les 100 ms,
    sachant que il y a un axe des ordonnees et des abscisses qui eux ne doivent pas changer, je trouve cela inutile de tout effacer et de redevoir redessiner mes axes a cahque fois toutes les 100 ms.

    Surtout que au bout d'un mement, la chaien de caractere ne se redessine plus.

    Merci

    Algernon

  2. #2
    Membre éclairé
    Homme Profil pro
    Développeur
    Inscrit en
    Septembre 2007
    Messages
    497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 497
    Par défaut
    En utilisant un deuxieme panel?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 107
    Par défaut
    Merci pour ton aide, mais est-ce que je pourrais avoir un peu plus de precision,
    un deuxieme panel pour faire quoi ?????

    Merci

  4. #4
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Par défaut
    salut

    Surtout pas un second Panel, mon dieu, quel horreur...

    Il faut que tu gères ton dessin en utilisant des couches (layers).

    Pour se faire, il faut que tu dessines tes "différentes" couches dans des images (rempli avec couleur transparente) et ensuite, dans le paint, tu fais un DrawImage() des différentes layers.

    Comme celà, si une seule layer change, tu la redessines dans ton image et ensuite, tu refais le draw Image de tout le monde.

    Il s'agit pour moi de la solution la plus propre et la plus simple à faire. et en termes de performance, c'est "optimal"

    voilà

  5. #5
    Membre éclairé
    Homme Profil pro
    Développeur
    Inscrit en
    Septembre 2007
    Messages
    497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 497
    Par défaut
    Algernon2 quand tu auras "joue" avec les layers proposait par themonz je suis preneur d'un bout de code d'exemple .

  6. #6
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Par défaut
    tiens, prends ça
    Fichiers attachés Fichiers attachés

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 107
    Par défaut
    OK pas de probleme, je suis en train de dessiner mes axes sur paint pour le moment, je donne un bout de code des que possible.

    Algernon

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 107
    Par défaut
    Merci TheMonz31 pour ton example.
    C'est tres sympa

    Algernon

  9. #9
    Membre éclairé
    Homme Profil pro
    Développeur
    Inscrit en
    Septembre 2007
    Messages
    497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 497
    Par défaut
    Cool merci

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 107
    Par défaut
    Bonjour,

    Merci jai fini de coder mon histogramme avec mes axes, la methode avec les couches ma beaucoup aider.

    Voici un bout de code :

    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
    /* Class Layer.cs */
    namespace XXXXX
    {
        public delegate void VisibleChanged();
     
        public class Layer
        {
            private Bitmap image = null;
            private bool visible = true;
            public event VisibleChanged OnVisibilityChanged = null;
     
            public bool IsVisible
            {
                get { return visible; }
                set { visible = value; }
            }
     
            public Bitmap Image
            {
                get { return image; }
                set { image = value; }
            }
     
            public void Show(bool state)
            {
                visible = state;
                UpdateVisibility();
            }
     
            private void UpdateVisibility()
            {
                if (OnVisibilityChanged != null)
                {
                    OnVisibilityChanged();
                }
            }
     
            public void Update(/*string name, Color col, PointF pos*/)
            {
                try
                {
                    if (image == null)
                    {
                        image = new Bitmap(759, 577);
                    }
     
                    Bitmap b = new Bitmap(this.image);
                    Color c = b.GetPixel(1, 1);
                    b.MakeTransparent(c);
                    this.image = (Bitmap)b;  
                }
                catch (Exception ex)
                {
                    MessageBox.Show("EXCEPTION : " + ex.Message);
                }
            }
        }
    }

    et voici un bout de ma classe qui sse sert de layer:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    this.FixedLayout = new Layer();
    this.FixedLayout.Image = (Bitmap)Image.FromFile(Application.ExecutablePath.Remove(Application.ExecutablePath.IndexOf("XXXXXX.exe")) + "Histo_Mono.bmp");
                    else if (this.N == 3)
                        this.FixedLayout.Image = (Bitmap)Image.FromFile(Application.ExecutablePath.Remove(Application.ExecutablePath.IndexOf("XXXXXX.exe")) + "Histo_Color.bmp");
     
    this.FixedLayout.Update();
    this.FixedLayout.Show(true);
    this.Graphic.DrawImage(this.FixedLayout.Image, new Point(0, 0));

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 107
    Par défaut
    En esperant que cela taidera Xian
    et merci TheMonz.

    Mon code reprend presque entierement ta classe Layer mais nutilise pas layer.

    Algernon

  12. #12
    Membre éclairé
    Homme Profil pro
    Développeur
    Inscrit en
    Septembre 2007
    Messages
    497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 497
    Par défaut
    Merci

  13. #13
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Par défaut
    de Rien

    Comme tu peux le voir, on peut faire du "multi-couche" assez facilement en .Net

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 06/08/2006, 00h08
  2. Problème startup après copie d'instance
    Par malaux dans le forum Oracle
    Réponses: 17
    Dernier message: 12/07/2006, 18h38
  3. Problème effacement d'une balise html
    Par loudv dans le forum Web
    Réponses: 1
    Dernier message: 04/12/2005, 18h51
  4. Problème champ après import d'excel vers access
    Par David M dans le forum Access
    Réponses: 6
    Dernier message: 16/10/2005, 11h53
  5. [xsl:fo] problème avec external-graphic
    Par jehlg dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 11/10/2005, 11h57

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