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

wxWidgets Discussion :

afficher une BMP venant de l'API windows


Sujet :

wxWidgets

  1. #1
    Membre éclairé Avatar de hansaplast
    Homme Profil pro
    Artisant logiciel
    Inscrit en
    Septembre 2005
    Messages
    948
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Artisant logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 948
    Points : 719
    Points
    719
    Par défaut afficher une BMP venant de l'API windows
    Bonjours, je pense qu'un recapitulatif s'impose :

    j'ai un prog client serveur.
    je le voulait multi OS, donc j'ai utilisé Wxwidgets
    Mon serveur doit capturer l'image affichée a l'ecran
    =>utilisation de l'API windows

    mon client doit afficher cette image
    =>je tente d'utiliser wxwidgets quand meme...

    donc, a l'aide de l'api windows, je suis sensé envoyer le champ de bit uniquement(mais, je ne connait pas son format : 8bit, 16bit...). Je precise que je n'envoie aucune meta donnée de mon bitmap, juste le tableau des couleures.

    ensuite, coté client, je veut recupérer cette image, et l'afficher.
    voici mon 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
     
    wxCoord x = 0;
    wxCoord y = 0; 		     		    
    wxImage MyImage;
    MyImage = new wxImage(1024, 768, buffImage); //buffimage : le buffer de données => le champ de bit => la bitmap ;p
    wxBitmap bmp(MyImage,8);
    wxScreenDC *ecranDC; 		   		    
    ecranDC->StartDrawingOnTop();
    ecranDC->DrawBitmap(bmp, x, y, false);  <===PLANTAGE
    //PLANTAGE, justye au dessus => erreure de segmentation
    ecranDC->EndDrawingOnTop();
     
    /* cette partie en commentaire, me servait de test : j'envoyait un fichier, et le ré-ecrivait : ca marchait
     
    wxFile *myfile ;
    myfile= new wxFile(_("./image/testBMPRecue.bmp"), wxFile::write);
    myfile->Write(buffImage, tailleImg);
    SetImgCliEnCours(false);
    */
    buffimage est un "unsigned char *" dont la taille est allouée dynamiquement, en fonction de la taille de l'image a recevoir

  2. #2
    Membre éclairé Avatar de hansaplast
    Homme Profil pro
    Artisant logiciel
    Inscrit en
    Septembre 2005
    Messages
    948
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Artisant logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 948
    Points : 719
    Points
    719
    Par défaut
    je sait plus ce que j'ai modofié
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    wxBitmap bmp(MyImage,8);

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 73
    Points : 41
    Points
    41
    Par défaut
    Tu devrais peu être poser la question de ce coté :

    http://wxforum.shadonet.com/viewforum.php?f=1

    A moins que tu ne connaisse deja le forum de wxWidgets...

  4. #4
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 751
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 751
    Points : 10 667
    Points
    10 667
    Billets dans le blog
    3
    Par défaut
    BITMAPINFO contient les infos sur le bitmap. Il me semble que seuls les bitmap <= 8 bits ont une palette.

  5. #5
    Membre éclairé Avatar de hansaplast
    Homme Profil pro
    Artisant logiciel
    Inscrit en
    Septembre 2005
    Messages
    948
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Artisant logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 948
    Points : 719
    Points
    719
    Par défaut
    Citation Envoyé par hansaplast
    je sait plus ce que j'ai modofié
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    wxBitmap bmp(MyImage,8);
    oula! je vient de ma relire, j'ai dut boire?

    donc, en fait, mon soft plante plus tot, il me semblait vriament qu'il plantait la ou je l'vait indiqué, mais en fait, c'est la la ligne que j'ai "quoté" :wxBitmap bmp(MyImage,8);
    j'ai essayé avec differentes valeures (8,16,24,32) en sachant que mon bureau est en 24 bits, mais rien n'y fait, ej plante a ce niveau la

    ps : merci pour vos reponses, je regarde de suite

  6. #6
    Membre éclairé Avatar de hansaplast
    Homme Profil pro
    Artisant logiciel
    Inscrit en
    Septembre 2005
    Messages
    948
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Artisant logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 948
    Points : 719
    Points
    719
    Par défaut
    Citation Envoyé par Aurelien.Regat-Barrel
    BITMAPINFO contient les infos sur le bitmap. Il me semble que seuls les bitmap <= 8 bits ont une palette.
    en fait, mon serveur (celui qui envoie la bmp) a toutes les info (dont BITMAPINFO ...) mais, j'aimerait ne pas avoir a les envoyer...

    de plus, je ne comprend pas mon erreure de segmentation :
    créer une wxImage fonctionne, puis la transformer en wxBitmap fait une erreure de seg.
    ...?!?

  7. #7
    Membre éclairé Avatar de hansaplast
    Homme Profil pro
    Artisant logiciel
    Inscrit en
    Septembre 2005
    Messages
    948
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Artisant logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 948
    Points : 719
    Points
    719
    Par défaut
    un autre pb :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MyImage.SaveFile(_("./image/testAPI.bmp"), 1);
    sert a sauver l'image crée, ors, si je fait ceci, la bitmap sauvegardée est vierge : toute blanche!

    apperement, au lieu de prendre mon buffer comme source, cette methode le prend comme destination et le vide entierement...

  8. #8
    Membre éclairé Avatar de hansaplast
    Homme Profil pro
    Artisant logiciel
    Inscrit en
    Septembre 2005
    Messages
    948
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Artisant logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 948
    Points : 719
    Points
    719
    Par défaut
    sinon, je me demande si je peut "capturer" ma BMP avec l'api windows, puis la copier dans une structure wxBitmap... ca pourrait peut etre me simplifier les choses...
    en effet, wxwidgets fournit des classes wxDC...
    donc copier d'un DC de l'api windows, puis le passer a WX...

    enfin, je bloque carrement la...

    la seule solution serait d'enregister le fichier avec l'api windows, de le lire et de la tranferrer, de le re-ercrire, puis de le lire (ca, j'y arrive) mais c'est pas optimum...

    si qqun a une idée... ne serait-ce qu'une bribe...

  9. #9
    Membre éclairé Avatar de hansaplast
    Homme Profil pro
    Artisant logiciel
    Inscrit en
    Septembre 2005
    Messages
    948
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Artisant logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 948
    Points : 719
    Points
    719
    Par défaut
    la seule solution serait d'enregister le fichier avec l'api windows, de le lire et de la tranferrer, de le re-ercrire, puis de le lire (ca, j'y arrive) mais c'est pas optimum...
    bon, bein j'ai utilisé cette solution :'(

    je met en delestage.

Discussions similaires

  1. afficher une variable venant de PHP
    Par efedril dans le forum Langage
    Réponses: 8
    Dernier message: 08/05/2013, 09h56
  2. [QtGui] Afficher une image dans un QLabel sous Windows
    Par LudoSIGMA dans le forum PyQt
    Réponses: 4
    Dernier message: 11/07/2011, 18h03
  3. ?Faire une petite appli/ C en API windows
    Par booraq dans le forum Windows
    Réponses: 2
    Dernier message: 09/12/2006, 11h04
  4. Réponses: 2
    Dernier message: 28/05/2006, 11h34
  5. créer une zone pour afficher une BMP scrollable
    Par hansaplast dans le forum wxWidgets
    Réponses: 15
    Dernier message: 14/03/2006, 09h25

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