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

MFC Discussion :

[MFC] Cbitmap


Sujet :

MFC

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 7
    Par défaut [MFC] Cbitmap
    bonjour à tous

    je dois faire un programme qui permet de charger puis d'enregistrer des bitmaps 24 après avoir modifié certains pixels

    j'ai écris une classe bitmap qui charge un bitmap 24 bits dans un tableau à 3 dimensions qui contient la valeur rouge verte et bleue de chaque pixel

    pour modifier la valuer d'un pixel je modifie mon tableau, et pour enregistrer l'image je réécris le tableau dans un fichier

    jusque là tout va bien le hic c'est que j'affiche mon tableau dans une fenêtre à l'aide de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pDC->SetPixel(myPoint,pDoc->myBitmap->getValueOfPixel(myPoint.y,myPoint.x)) ;
    et les temps d'affichage sont assez longs voire même pitoyables

    j'ai essayé d'ouvrir mon image avec un Cbitmap puis de l'afficher à l'aide d'un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pDC->BitBlt(0,0,bi.bmWidth,bi.bmHeight,&bmDC,0,0,SRCCOPY);
    ça marche super mais...

    comment fait-on pour stocker la valeur des pixels de l'image dans un tableau à partir d'un Cbitmap ?

    comment fait -on pour écrire le contenu d'un Cbitmap sous la forme d'un bmp ?

    merci d'avance à ceux qui auront le courage de me répondre

  2. #2
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    salut,
    va voir ce post qui propose une classe CDIb 24 bits qui montre comment creer un bitmap pixels /pixels et par couleur.
    ca devrait resourdre ton pb d'acces par pixels et aussi de lecture/ecriture.
    http://www.codeguru.com/bitmap/pixel_access.shtml

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 7
    Par défaut
    le problème que j'ai avec SetPixel c'est qu'il recalcule toute la fenêtre à chaque fois qu'on y touche et on perd un paquet de temps

    à ce propos comment peut-on fixer la taille de la fenêtre que l'on va ouvrir ?

    comment fait t-on pour mettre une taille max par défaut et ajouter des acensceur si jamais on la dépasse ?

    merci encore une fois

  4. #4
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    salut,
    il faut utiliser la CSCrollView comme classe de dessin, qui permet de definir une taille de base et fournie des scrollbars quand la taille physique de la fenetre est < a la taille reelle.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    void CMyView::OnInitialUpdate()
    {
      SetScrollSizes(MM_TEXT, CSize(100,100));
      CScrollView::OnInitialUpdate();
    }
    mais apres il faut tenir compte des scrollbars pour le dessin.....

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 7
    Par défaut
    on va oublier les scroll bars je ne me sens pas d'attaque pour le moment...

    comment on fait pour fixer la taille de la fenêtre sans scroll bars ?

    sinon merci beaucoup pour ton lien farscape j'ai trouvé réponse à mon problème

  6. #6
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    salut , je pensais bien que ce post devait resoudre ton pb.
    sinon pour changer la taille d'une view on change la taille de la mdi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    CRect  RectFrame;
    GetParentFrame()->GetWindowRect(&RectFrame);	GetParentFrame()->SetWindowPos(NULL,0,0,RectFrame.Width(),lParam,SWP_NOMOVE | SWP_NOZORDER);
    ou lParam represente ici ma nouvelle hauteur.
    BOOL SetWindowPos (
    const CWnd* pWndInsertAfter,
    int x,
    int y,
    int cx,
    int cy,
    UINT nFlags );

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

Discussions similaires

  1. [MFC]Du CDC à la CBitmap
    Par BlueRiver dans le forum MFC
    Réponses: 4
    Dernier message: 10/08/2006, 15h08
  2. utilisation de la classe CBitmap de la MFC
    Par obiwane666 dans le forum MFC
    Réponses: 8
    Dernier message: 27/01/2006, 19h49
  3. utiliser les tag [MFC] [Win32] [.NET] [C++/CLI]
    Par hiko-seijuro dans le forum Visual C++
    Réponses: 8
    Dernier message: 08/06/2005, 15h57
  4. Réponses: 1
    Dernier message: 04/04/2005, 11h19
  5. Réponses: 2
    Dernier message: 10/06/2002, 11h03

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