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 :

classe Bitmap et LockBitmap.


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Février 2012
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Février 2012
    Messages : 121
    Par défaut classe Bitmap et LockBitmap.
    Bonjour à tous,

    j'ai un petit soucis, lorsque j'essai de dessiner sur une pictureBox dans ma fenêtre windowsForm.

    J'instancie ma classe FractalDrawer aux dimensions de ma pictureBox :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    _fractalDrawer = new FractaleDrawer(pictureBox1.Width, pictureBox1.Height);
    puis j'utiliser une méthode Resize qui sera utilisée lorsque je redimensionnerai ma fenetre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
            public void Resize(int pWidth, int pHeight)
            {
                _bmp = new Bitmap(pWidth, pHeight);
                _bmpData = LockBitmap();
                // Declare an array to hold the bytes of the bitmap. 
                int bytes = Math.Abs(_bmpData.Stride) * _bmp.Height;
                _rgbValues = new byte[bytes];
                UnlockBitmap();
            }
    Ma méthode LockBitmap, est une sucharge de la méthode LockBitmap de la classe Bitmap, que voici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    private BitmapData LockBitmap()
            {
                return _bmp.LockBits(_rect, ImageLockMode.ReadWrite, _bmp.PixelFormat);
            }
    mon erreur survient lors de la compilation, il semblerait que le _bmp.PixelFormat ne soit pas bon, le format n'est pas correct, et je ne vois pas comment je pourrais le trouver ...
    En fouillant un peu j'ai vu que c'est une énumération, mais je ne sais pas du tout quoi mettre ...

    des idées sur quoi mettre ? et surtout comment le savoir ?

    Merci d'avance,

    Error.

  2. #2
    Membre chevronné
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2011
    Messages
    610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2011
    Messages : 610
    Par défaut
    Citation Envoyé par Error407 Voir le message
    mon erreur survient lors de la compilation, il semblerait que le _bmp.PixelFormat ne soit pas bon, le format n'est pas correct, et je ne vois pas comment je pourrais le trouver ...
    Une erreur? et quelle est-elle?
    Peux tu nous montrer aussi comment est déclaré _rect? Il a bien la même hauteur et largeur que _bmp?

  3. #3
    Membre confirmé
    Inscrit en
    Février 2012
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Février 2012
    Messages : 121
    Par défaut
    mes excuses, bien sûr :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Rectangle rect = new Rectangle(0, 0, pictureBox1.Width, pictureBox1.Height);*
    L'erreur est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Argument exception was unhandled
    Le paramètre n'est pas valide.

  4. #4
    Membre chevronné
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2011
    Messages
    610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2011
    Messages : 610
    Par défaut

    Mais par curiosité... quel est l'intérêt de recadrer une bitmap vide? Le but serait d'ajouter directement le chemin de l'image dans _bmp afin de recadrer l'image...
    J'ai un peu de mal à saisir

    Edit : pWidth != pictureBox1.Width ?? Si true, je doute que ca fonctionne

  5. #5
    Membre confirmé
    Inscrit en
    Février 2012
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Février 2012
    Messages : 121
    Par défaut
    l’intérêt est qu'a chaque fois que je fait appel à l’évènement resize je passe par cette méthode qui me permettra de redimensionner le graphe et de recalculer l'échelle ...

    Bon choix ou pas, dans un premier temps j'essai de voir comment je peux faire fonctionner le bousin ;D

    Sinon, on a bien pWidth = pictureBox1.Width , et idem pour height :p

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
            public FractaleDrawer(int pWidth, int pHeight)
            {
                Resize(pWidth, pHeight);
     
            }

  6. #6
    Membre chevronné
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2011
    Messages
    610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2011
    Messages : 610
    Par défaut
    Ok, il est possible alors que ce soit le format pixel qui n'est pas supporté.
    Il peut être de 8, 24 ou 32... bits par pixel (le reste ici). Pour vérifier:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int BytePixel = GetPixelFormatSize(_bmp.PixelFormat);

Discussions similaires

  1. Problème d'adaptation avec la classe Bitmap
    Par anto2b dans le forum Android
    Réponses: 7
    Dernier message: 01/05/2012, 01h46
  2. Utilisation de la classe Bitmap
    Par mrfalxe dans le forum Android
    Réponses: 8
    Dernier message: 20/09/2010, 18h23
  3. Travailler avec les bitmaps et les classe
    Par jbs106 dans le forum Windows
    Réponses: 2
    Dernier message: 23/07/2010, 12h39
  4. Réponses: 5
    Dernier message: 08/01/2009, 22h08
  5. acces a uneressource bitmap depuis une classe
    Par firejocker dans le forum MFC
    Réponses: 9
    Dernier message: 03/02/2006, 21h48

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