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 :

rafraichissement avec GDI+


Sujet :

C#

  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 296
    Par défaut rafraichissement avec GDI+
    Bonjour,
    Actuellement je crée des dessins sur une form rafraichit avec OnPaint .
    Mais lorsque je clique en dehors de la form , mon affichage part en carafe et m'affiche un fond blanc avec une croix rouge.
    Sinon tout marche bien tant que je ne clique pas en dehors , sauf que j'en ai besoin pour changer de fenêtre.
    Des suggestions ?

    Merci

  2. #2
    Membre émérite Avatar de ctxnop
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Morbihan (Bretagne)

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 858
    Par défaut
    Bonjour,
    Ça sent l'exception à plein nez. Il y à une option dans Visual Studio qui permet de s'arrêter en debug sur toute exception lancée, qu'elle soit catchée ou non.
    Active cette option et recommence, tu tombera surement sur une exception qui provoque cet état.

    L'option se situe dans le menu "Déboguer->Exceptions...", il faut cocher la ou les cases en face de "Common Language Runtime Exceptions".

  3. #3
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 296
    Par défaut
    En effet lorsque je clic en dehors de ma fenêtre j'ai une grosse erreur :
    "Une exception de première chance de type 'System.NullReferenceException' s'est produite dans Drawing.exe
    Informations supplémentaires*: La référence d'objet n'est pas définie à une instance d'un objet."

    cette erreur apparait sur cette ligne
    Rectangle destRect = new Rectangle(A,B,C,D);

    je pense que cela vient peut-être de la façon dont je gére le OnPaint car dans celui-ci je passe le PaintEventArgs à des fonctions pour qu'elles fassent leur dessin.
    exemple :
    protected override void OnPaint(PaintEventArgs e)
    {
    switch (Selection)
    {
    case 1:
    dessineA(e);
    break;

    case 2:
    dessineB(e);
    break;

    case 2:
    dessineC(e);
    break;
    }
    e.Dispose();
    }

    private void dessineA(PaintEventArgs e)
    {
    string Str = "dessin.png";
    Image PctBox = Image.FromFile(Str);
    Rectangle destRect = new Rectangle(A,B,C,D);
    e.Graphics.DrawImage(PctBox, destRect);
    }

    Grosso merdo mon code est fait comme ça

    Merci

  4. #4
    Membre émérite Avatar de ctxnop
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Morbihan (Bretagne)

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 858
    Par défaut
    Bah maintenant que tu sais où c'est, tu met un point d'arrêt, tu recommence, et tu va te retrouver dans le code juste avant que l'exception ne se produise. De cette manière tu pourra inspecter les variables pour savoir qu'est-ce qui est nul.
    Attention cependant, avec les exceptions de première chance, il arrive quasi systématiquement que le débogueur place le curseur d'exécution une ligne avant, ou après, la ligne qui pose réellement problème.

    Quand on regarde ton code, il ne peut pas y avoir de nullreferenceexception sur la ligne "Image PctBox = Image.FromFile(Str);" car c'est statique et que Str est initialisé à la ligne d'au dessus.
    Sur la ligne "Rectangle destRect = new Rectangle(A,B,C,D);" on ne sait pas d'où sortent A, B, C et D, donc potentiellement l'un d'entre eux est nul. Mais de mémoire, le constructeur de Rectangle n'accepte que des paramètres qui ne peuvent pas être nulls (int, float, etc...) donc ça ne doit pas venir d'ici.

    Reste "e.Graphics.DrawImage(PctBox, destRect);". Ici, e, Graphics et dstRect peuvent être nuls.

  5. #5
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 296
    Par défaut
    Bon ben voila un truc résolu.
    En fait c'est la fonction
    Form1.ActiveForm.Height ou Form1.ActiveForm.Width
    qui renvoie null quand tu perds le focus et comme je l'utilisais pour placer mon bazar ben ça marchait plus.
    Je ne pensais pas à ça du tout .
    Merci pour m'avoir fait réfléchir un peu.

    Merci

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

Discussions similaires

  1. ajax,rafraichissement avec une liste deroulante
    Par klimero dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 25/04/2006, 09h41
  2. Rafraichissement avec un formulaire
    Par bianconeri dans le forum Langage
    Réponses: 13
    Dernier message: 14/02/2006, 10h39
  3. [MySQL] bleme de rafraichissement avec PHP
    Par wodel dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 14/11/2005, 13h23
  4. Rafraichissement avec une variable
    Par niceday dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 22/08/2005, 10h08
  5. Dessiner un repere avec GDI ?
    Par djiwalloo dans le forum MFC
    Réponses: 19
    Dernier message: 12/10/2004, 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