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 :

Application MFC - MDI - Gestion des couleurs �trange


Sujet :

MFC

  1. #1
    Membre habitu�
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    14
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 14
    Par d�faut Application MFC - MDI - Gestion des couleurs �trange
    Bonjour, rebonjour pour certains ^^

    Je suis toujours sur le d�veloppement de mon application MFC de type MDI qui trace des courbes.

    Ayant r�gler mon probl�me de scrollbar, je tombe sur un autre soucis � la X-Files !

    En effet, mon application trace des courbes dans un rep�re.
    Le rep�re est stylis� par un rectangle ainsi que de droites verticales et horizontales formant un quadrillage.

    Les intervalles de confiance � 2 sigma (sigma = �cart type, cf statique) sont eux en gris.

    Le principe est de voir si la courbe qui est trac�e via les param�tres rentr�es dans la boite de dialogue est dans le "gabarit" de l'intervalle de confiance � 2 sigma ou en dehors de celui ci.

    A l'�cran aucun probl�me, j'ai pile ce que je veux :

    - Mon rep�re et le quadrillage sont en noir d'�paisseur de 1 pixel
    - Ma courbe est en noir d'�paisseur de 4 pixels
    - Mon intervalle de confiance est en gris, il correspond au coloriage entre deux droites qui d�finissent le max et le min de mon intervalle => en gros je colorie sur toute ma surface...

    Par contre � l'impression c'est l� c'est du grand Nawak...

    En effet, ce qui devrait �tre en gris est imprim� en noir O_o

    Ce probl�me est relativement f�cheux car le but de mon application est justement d'�diter des courbes compar�es � un intervalle de confiance calcul� ind�pendamment des valeurs saisies.

    Ma question est donc : comment VC 6 g�re-t- il l'impression des niveaux de gris ?

    O� dois-je modifier mon code pour que tout rentre dans l'ordre ?

    Merci d'avance !

  2. #2
    Membre habitu�
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    14
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 14
    Par d�faut
    Quelques pr�cisions :

    Avec un crayon d�finit de la sorte :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    CPen Crayon_Gris; 
    Crayon_Gris.CreatePen(PS_SOLID,1,RGB(211,211,211));
    pDC->SelectObject(&Crayon_Gris);
    A l'�cran mon intervalle de confiance est bien trac� en gris mais � l'impression c est du noir...


    Des suggestions ?

  3. #3
    Expert confirm�
    Avatar de Mat.M
    Profil pro
    D�veloppeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 537
    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 537
    Par d�faut
    Citation Envoy� par m.olivier.valentin Voir le message

    Par contre � l'impression c'est l� c'est du grand Nawak...

    En effet, ce qui devrait �tre en gris est imprim� en noir O_o
    Aaah les impressions c'est un autre monument de la programmation win32/MFC

    Les impressions c'est �galement une chose d'assez complexe car avec GetSystemMetrics GetDeviceCaps ( voir le MSDN ) il faut pouvoir d�terminer si l'imprimante permet tel ou tel style de trac�...
    Donc il faut fouiller dans le MSDN ;
    Il faut g�rer aussi la r�solution de l'imprimante avec l'histoire des DPI ou Dot Per Inch
    Donc si tu as un probl�me de trac� c'est que l'imprimante ne permet pas telle ou telle op�ration

    Est-ce que tu utilises un Contexte de P�riph�rique en m�moire ?
    Voir aussi si StretchBlt est bien support�e

  4. #4
    Membre habitu�
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    14
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 14
    Par d�faut
    Je pr�cise juste qu'il n'y a QUE la couleur qui n'est pas bonne, le reste c'est parfait, r�solution, etc etc....

    Dans quelle fonction il faut que je cherche � faire des modif ? Dans quelle classe se trouve-t-elle ?

    J'ai essay� de regarder avec msdn mais je pense que j avais pas sais les bons mots cl�s...

    Si vous avez des pr�cisions cela m'aiderait !

    Merci !

  5. #5
    Membre habitu�
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    14
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 14
    Par d�faut
    J'ai fait un petit tour sur msdn ce jour pour regarder le d�tail de certaines fonctions de ma classe view d�rivant de ScrollView.

    Je suis tomb� notamment sur le descriptif de OnPreparePrinting et plus particuli�rement l� dessus :

    The default implementation of this function does nothing. Override this function to allocate any GDI resources, such as pens or fonts, needed specifically for printing.
    Or comme je g�re la couleur de mes courbes avec des crayons justement, peut �tre devrais je d�clarer ceux ci dans cette fonction non ?

    Si vous avez des indices pour la r�solution de ce probl�me, je dis pas non...

    Merci d'avance !

  6. #6
    Expert confirm�
    Avatar de Mat.M
    Profil pro
    D�veloppeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 537
    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 537
    Par d�faut
    Salut Olivier ce serait plutot avec OnBeginPrinting car cette m�thode te fournit un CDC. ( et selon la bible "Programming Windows with MFC" de Jeff Prosise )
    Si tu as des probl�mes de couleur je le r�p�te c'est parce que l'imprimante ne supporte pas certaines op�rations de trac�...
    tu devrais appeler GetDeviceCaps() pour cela


    When you send output to the printed page, it's generally a mistake to assume anything about the printable area of the pages you'll be printing.

    Even if you know you're printing to, say, an 8�-by-11-inch page, the printable page area will differ for different printers.

    The printable page area can even differ for the same printer and the same paper size depending on which printer driver is being used, and the horizontal and vertical dimensions of the printable page area will be switched if the user opts to print in landscape rather than portrait mode.

    Rather than assume you have a given amount of space to work with, do as HexDump does and call GetDeviceCaps through the CDC pointer provided to CView print functions to determine the printable page area each time you print, or use CPrintInfo::m_rectDraw in your OnPrint function.

    This simple precaution will enable your printing code to work with any printer Windows can throw at it and will greatly reduce the number of problem reports you receive from users.

    As you've already learned, calling GetDeviceCaps with HORZRES and VERTRES parameters returns the horizontal and vertical dimensions of the printable page area. You can pass the following values to GetDeviceCaps to get more information about a printer or other hardcopy device:


    RASTERCAPS Returns a series of bit flags identifying the level of GDI support provided by the printer driver. For example, an RC_BITBLT flag indicates that the printer supports BitBlts, and RC_STRETCHBLT indicates that the printer supports StretchBlts.
    NUMCOLORS Returns the number of colors the printer supports. The return value is 2 for black-and-white printers.

  7. #7
    Membre habitu�
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    14
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 14
    Par d�faut
    Si tu as des probl�mes de couleur je le r�p�te c'est parce que l'imprimante ne supporte pas certaines op�rations de trac�...
    Non cela ne vient pas de l� : mon imprimante est tout � fait capable de r�aliser ce genre de tracer, inutile de continuer sur cette voix...

    Par contre, je veux bien que tu m'expliques pour cette histoire de GetDeviceCaps() parce que je t'avoue que j'ai, semble-t-il, pas tout compris...

    Pour le point que tu soul�ve sur OnBeginPrinting, je n'en ai aucune id�e, si tu penses qu'il faut le faire l� et si tu sais comment il faut s'y prendre, je suis tout ou� !

    Encore merci

  8. #8
    Expert confirm�
    Avatar de Mat.M
    Profil pro
    D�veloppeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 537
    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 537
    Par d�faut
    eh bien c'est tout simple il faut que tu appelles GetDeviceCaps pour te donner les parametres de l'imprimante ses possibilties c'est explique dans le MSDN.
    Il faut que tu calcules le mode de resolution de l'imprimante les capacites de trace graphique

  9. #9
    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,
    vc6 n'a pas de m�thode particuli�re pour g�rer les niveaux de gris,
    la v�rit� est ailleurs.
    les objets gdi allou�s sont bien rel�ch�s apr�s utilisation ?
    je suppose que tu as pens� � regarder le param�trage de l'imprimante ?
    tu as essay� avec un autre �dition ?, genre tu fais une copie �cran de ton dessin et tu l'imprime dans paint , �a fonctionne ?

  10. #10
    Membre habitu�
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    14
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 14
    Par d�faut
    tu as essay� avec un autre �dition ?, genre tu fais une copie �cran de ton dessin et tu l'imprime dans paint , �a fonctionne ?
    oui cela fonctionne sans aucun probl�me, c'est pour cela que j'ai dit que mon imprimante est tout a fait capable de faire cela...

    donc je suppose que cela vient de mon application et non de l'imprimante.

    les objets gdi allou�s sont bien rel�ch�s apr�s utilisation ?
    En fait � part la d�claration de mes crayons (cf ci dessus), mon application ne fait que des pDC->MoveTo() puis pDC->LineTo(). Pour la gestion du texte j'utilise pDC->TextOut()...

    Le probl�me peut-il venir de l� ?

    je suppose que tu as pens� � regarder le param�trage de l'imprimante ?
    Rha mais enfin, mon imprimante fait ce genre de trac� SANS probleme... Elle fait m�me bien plus compliqu� en temps normal...

    Je pense que cela vient plut�t du fait que mon application communique mal avec l'imprimante... Et l� je sais pas quoi faire...

    Normal les couleurs devraient �tre imprim�s en niveau de gris (dans mon cas j ai deux couleurs : du rouge et du gris). Seulement non tout est imprim� en noir !

    Donc comment m'en sortir ?

  11. #11
    Membre habitu�
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    14
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 14
    Par d�faut
    Bon eh bien je suis toujours bloqu� avec ce probl�me d'impression, cela devient vraiment ennuyant...

    J'ai essay� de trouver des infos sur GetDeviceCaps et sur la gestion des couleurs mais je vois pas comment faire...

    Tout aide est la bienvenue...

    Ps : les r�ponses du type "ah mais c'est tout simple il faut faire X ou Y" merci mais je pr�f�rerais plut�t des r�ponses d�taill�es pour r�soudre mon probl�me relativement rapidement... MSDN je l'ai fouill� en long, en large et en travers et sans succ�s !

    MERCI

Discussions similaires

  1. [MFC]MDI - switcher des documents
    Par Nemehy dans le forum MFC
    R�ponses: 4
    Dernier message: 30/03/2006, 16h20
  2. [VB] gestion des couleurs des variables de type string
    Par landry005 dans le forum VB 6 et ant�rieur
    R�ponses: 1
    Dernier message: 28/03/2006, 14h36
  3. [MDI] gestion des fenêtres
    Par Lenaick dans le forum C++Builder
    R�ponses: 12
    Dernier message: 23/02/2006, 18h15
  4. R�ponses: 2
    Dernier message: 11/05/2005, 13h23
  5. [Debutant] gestion des couleurs ??
    Par MaxiMax dans le forum OpenGL
    R�ponses: 5
    Dernier message: 26/03/2004, 08h34

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