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 :

luminosité sur visual c++


Sujet :

MFC

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 27
    Par défaut luminosité sur visual c++
    bonjour à tous!!

    svp est ce qu'il y a qq1 qui connait une commande sur visual c++, pour gérer la luminosité des images, avec éventuellemnt des boutons plus et moins! je bosse sur des dialogues! (MFC)
    g cherché sur GDI+ mais g pas trouvé.. plz help!!!
    a plus!

  2. #2
    Expert confirmé
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 526
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 526
    Par défaut
    La luminosité c'est appliquer un filtre pixel par pixel ; chaque pixel est affiché selon une composante RGB en 24bits donc il faut jouer sur les composantes R G B ; il ya des formules pour cela je te conseille de poser la question dans le forum Algorithmes...
    A moins que GDI+ ne propose une méthode intrinsèque pour faire cela ce dont je doute très fortement..

  3. #3
    Membre chevronné Avatar de stephdim
    Profil pro
    Inscrit en
    Août 2007
    Messages
    462
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 462
    Par défaut
    GDI+ propose une tripotée de filtres pour les images:

    Blur
    Sharpen
    Tint
    RedEyeCorrection
    ColorMatrixEffect
    ColorLUT
    BrightnessContrast
    HueSaturationLightness
    ColorBalance
    Levels
    ColorCurve

    Je pense que là dedans, tu devrais avoir ce qu'il te faut ...

    @+

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 27
    Par défaut
    salut,
    merci de votre réponse, dans un premier temps, g essayé d'adapter l'exemple de la doc de visual, Bitmap::ApplyEffect qui utiliste BrightnessContrast... mais ça ne marche pas !! je vais devenir folle :'( g ajouté les .h kil faut mais tjs rien!
    il ne reconnait meme pas la fonction !!

    help!!

  5. #5
    Membre chevronné Avatar de stephdim
    Profil pro
    Inscrit en
    Août 2007
    Messages
    462
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 462
    Par défaut
    ben il faut initialiser correctement GDI+

    tout d'abord dans mets dans StdAfx.h le code suivant pour etre tranquille:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    #include <gdiplus.h>
    using namespace Gdiplus;
    ensuite dans ta classe dérivée de CWinApp, rajoute la fonction suivante:

    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
     
    int CEssaiApp::Run()
    {
      GdiplusStartupInput gdiSI;
      GdiplusStartupOutput gdiSO;
      ULONG_PTR gdiToken;
      ULONG_PTR gdiHookToken;
     
      gdiSI.SuppressBackgroundThread = TRUE;
      GdiplusStartup(&gdiToken,&gdiSI,&gdiSO);
      gdiSO.NotificationHook(&gdiHookToken);
      int nRet = CWinApp::Run();
     
      gdiSO.NotificationUnhook(gdiHookToken);
      GdiplusShutdown(gdiToken);
     
      return nRet;
    }
    voir ici si tu veux des explications sur ce bout de code : http://msdn.microsoft.com/en-us/libr...ck(VS.80).aspx

    après, il y a plus qu'a ce laissez guider par la doc

    @+

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 27
    Par défaut
    saluuut !!

    merci bcp de m'aider, mais malheureusement, la fonction que tu m'a demandé d'ajouter m' a crée des erreurs au niveau de GdiplusBase.h, g pas du tout compris ces erreurs d'autant plus que je ne sais comment je peux les gérer ! g pas ecris la fonction

    tu en pense quoi stp ?! merciiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii

  7. #7
    Membre chevronné Avatar de stephdim
    Profil pro
    Inscrit en
    Août 2007
    Messages
    462
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 462
    Par défaut
    salut,

    le code que je t'ai donné viens de Microsoft.
    c'est exactement le meme code que j'utilise dans mes developpements et je te confirme que ça fonctionne sans probleme.

    sur quel IDE tu développes ? VS2005 ou VS98 ou autres ?

    oui le code est indispensable, sinon tu ne peux pas te servir des fonctions GDI+...

    @+

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 27
    Par défaut
    bonjour,
    g verifié encore mais rien, au fait pour le startup de gdi+ je l'ai fais correctement avant puisque j'utilise toutes les autres fonctions ( relatives à Image, Bitmap ....) sans pb! j'utilise le vs2003 et meme si c fonctions existent dans la doc, il les a viré.. qd je fais par exemple Bitmap. pr espérer des propositions de méthodes le ApplyEffect ny est plus , ( ni les classes associées). c pr sa que g compris pk le compilateur genere et di ke la méthode n'est pas membre de Bitmap!!
    enfin je c pas si c pas rapport à la version 2003, c bizar qd meme puisque la méthode figure dans la doc meme ( par que sur le site microsoft) !!

    merci !!

  9. #9
    Membre chevronné Avatar de stephdim
    Profil pro
    Inscrit en
    Août 2007
    Messages
    462
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 462
    Par défaut
    salut,

    fais un petit effort pour écrire tes questions, évite le langage SMS !!!

    En fouinant dans la MSDN, pour intervenir sur la luminosité tu as aussi une interface ImageAttributes qui combiné avec un Graphics:: DrawImage() ...

    c pr sa que g compris pk le compilateur genere et di ke la méthode n'est pas membre de Bitmap!!
    c'est dispo a partir de GDI+ 1.1, à tout les coups tu as un vieux SDK ...
    regardes pour télécharger le dernier SDK pour GDI+.

    @+

  10. #10
    Membre chevronné Avatar de stephdim
    Profil pro
    Inscrit en
    Août 2007
    Messages
    462
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 462
    Par défaut
    bon, je viens de faire un tour dans les header de GdiPlus sur VS2005 et effectivement Bitmap::ApplyEffect n'est pas implémenté ... ni les Effect d'ailleurs

    par contre sur VS2008 c'est implémenté

    recuperes le dernier SDK c'est la seule solution

    @+

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 27
    Par défaut
    bonjour,

    déjà désolée pour mes messages en mode sms j'avoue que c'est assez irritant ! c'est que j'écris toujours quand je suis en cours...
    sinon merci de ton aide, je vais lancer le chargement de VS2008 et je tiendrais au courant!! ça marchera cette fois ci je crois
    merci beaucouuuuup!

    à++

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 27
    Par défaut
    bonjour!!

    j'ai installé comme prévu le VS2008, et je suis sure que j'ai tout bien mis en place, l'initialisation de gdi+, les headers,.. mais toujours rien
    le compilateur ne reconnait pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    	BrightnessContrastParams briConParams;
    	briConParams.brightnessLevel = 120;
    	briConParams.contrastLevel = 0;
    	BrightnessContrast briCon;
    	briCon.SetParameters(&briConParams);
    et j'imagine qu'il reconnaitra pas ApplyEffect par la suite!

    je sais plus quoi faire,vraiment! surtout que je prends du retard là et je peux pas me passer de ces effets dans mon projet!

    SOS help!!

  13. #13
    Membre chevronné Avatar de stephdim
    Profil pro
    Inscrit en
    Août 2007
    Messages
    462
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 462
    Par défaut
    regardes si ce fichier existe:

    C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include\gdipluseffects.h

    essaye peut etre en mettant un #include <gdipluseffects.h> au cas où ...

    @+

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 27
    Par défaut
    merci vraiment de m'aider à chaque fois meme si je sais que c pénible de trouver la solution alors qu'on est pas en face du problème!
    par contre, je suis désolée de te dire que ce que j'avais déjà mis le #include <gdipluseffects.h> avant que tu le proposes... j'ai vérifié que gdipluseffects est bien dans C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include mais toujours :

    error C2065: 'BrightnessContrast' : undeclared identifier
    error C2228: left of '.SetParameters' must have class/struct/union
    type is ''unknown-type''


    le sort s'acharne comme dirait grandmère!!! :'(

  15. #15
    Membre chevronné Avatar de stephdim
    Profil pro
    Inscrit en
    Août 2007
    Messages
    462
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 462
    Par défaut
    dans GDIPLUSEFFECTS.H il y a cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    #if (GDIPVER >= 0x0110)
    et dans GDIPLUS.H :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    #ifndef GDIPVER
    #define GDIPVER 0x0100
    #endif
    donc d'après moi, il faut que tu fasses :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    #define GDIPVER 0x0110
    avant de faire un #include <gdiplus.h>
    a mettre dans le StdAfx.h par exemple
    ou le fichier targetver.h

    ça devrait le faire

    @+

  16. #16
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 27
    Par défaut
    re,
    en effet, il y a excactement les lignes de codes que tu m'as dit dans GDIPLUS.H et GDIPLUSEFFECTS.H.
    parcontre, ce que tu m'a demandé d'ajouter dans StdAfx.h il y est déjà,il y a meme une ligne qui m'a semblé suscpecte

    voilà je te montre tout mon StdAfx.h :
    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
    59
    60
    61
    62
    63
    64
    65
    66
    67
    ifndef _GDIPLUS_H
    #define _GDIPLUS_H
    
    struct IDirectDrawSurface7;
    
    typedef signed   short   INT16;
    typedef unsigned short  UINT16;
    
    
    // Define the Current GDIPlus Version
    #ifndef GDIPVER
    #define GDIPVER 0x0100 // c la ligne que tu m'a demandé d'ajouter elle était déjà là
    #endif
    
    #include <pshpack8.h>   // set structure packing to 8
    
    namespace Gdiplus
    {
        namespace DllExports
        {
            #include "GdiplusMem.h"
        };
    
        #include "GdiplusBase.h"
    
        #include "GdiplusEnums.h"
        #include "GdiplusTypes.h"
        #include "GdiplusInit.h"
        #include "GdiplusPixelFormats.h"
        #include "GdiplusColor.h"
        #include "GdiplusMetaHeader.h"
        #include "GdiplusImaging.h"
        #include "GdiplusColorMatrix.h"
    #if (GDIPVER >= 0x0110)   
        #include "GdiplusEffects.h" 
    #endif
        #include "GdiplusGpStubs.h"
        #include "GdiplusHeaders.h"
    
        namespace DllExports
        {
            #include "GdiplusFlat.h"
        };
    
    
        #include "GdiplusImageAttributes.h"
        #include "GdiplusMatrix.h"
        #include "GdiplusBrush.h"
        #include "GdiplusPen.h"
        #include "GdiplusStringFormat.h"
        #include "GdiplusPath.h"
        #include "GdiplusLineCaps.h"
        #include "GdiplusGraphics.h"
        #include "GdiplusMetafile.h"
        #include "GdiplusCachedBitmap.h"
        #include "GdiplusRegion.h"
        #include "GdiplusFontCollection.h"
        #include "GdiplusFontFamily.h"
        #include "GdiplusFont.h"
        #include "GdiplusBitmap.h"
        #include "GdiplusImageCodec.h"
    
    }; // namespace Gdiplus
    
    #include <poppack.h>    // pop structure packing back to previous state
    
    #endif // !_GDIPLUS_HPP

    ça m'a semblé un peu bizard , je c pas ce que tu en penses ..

    à+

  17. #17
    Membre chevronné Avatar de stephdim
    Profil pro
    Inscrit en
    Août 2007
    Messages
    462
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 462
    Par défaut
    ce que tu me montres c'est pas StdAfx.h mais GdiPlus.h

    et ça veut dire que si le symbole GDIPVER n'est pas défini, il définit le symbole avec la valeur 0x100 ce qui correspond à la version 1.0 par défaut

    et pour utiliser les effets il faut au moins la version 1.1 donc 0x110

    donc si le symbole n'est pas défini, c'est version 1.0 par défaut, or nous on veut 1.1

    donc faire le #define qui va bien en amont de #include <gdiplus.h>

    @+

  18. #18
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 27
    Par défaut
    oui en effet, désolé je me suis trompée!
    par contre si g bien compris, il faut changer dans gdiplus.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    #ifndef GDIPVER
    #define GDIPVER 0x0100
    #endif
    par ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    #ifndef GDIPVER
    #define GDIPVER 0x0110
    #endif
    je suis désolée si je comprends pas directement

    sinon je mets tjs le #define GDIPVER 0x0110 dans stdafx.h ?

    merci pour tout!!

  19. #19
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 27
    Par défaut
    si c'est ça je l'ai fait et ça detecte encore plus d'erreurs

  20. #20
    Membre chevronné Avatar de stephdim
    Profil pro
    Inscrit en
    Août 2007
    Messages
    462
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 462
    Par défaut
    ne jamais modifier un fichier de la SDK !
    donc pas touche à GDIPLUS.H

    quelque part dans ton programme tu fais bien un #include <gdiplus.h> ?
    ben juste la ligne d'avant tu tapes :

    #define GDIPVER 0x110

    c'est tout


    @+

Discussions similaires

  1. Réponses: 7
    Dernier message: 05/10/2005, 11h29
  2. Question sur Visual C++ et excel
    Par Super seb dans le forum MFC
    Réponses: 3
    Dernier message: 07/09/2005, 17h02
  3. cours dll sur visual c++
    Par hiko-seijuro dans le forum MFC
    Réponses: 6
    Dernier message: 22/07/2005, 09h28
  4. projet visual 6 sur visual 2003
    Par Kara dans le forum MFC
    Réponses: 4
    Dernier message: 29/04/2005, 09h35
  5. contrôle data sur visual basic 6.0
    Par Silent Thunder dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 29/03/2005, 19h29

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