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]Font et Antialiasing


Sujet :

MFC

  1. #1
    Membre chevronné
    Avatar de matazz
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    471
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 471
    Par défaut [MFC]Font et Antialiasing
    Bonjour,

    J'ai un petit problème que je traine dpuis longtemps et qu'il me fau résoudre maintenant.
    Je m'explique j'ai fait une fonction DrawTexte (...) qui prend en paramètre un CDC*, la police, la taille, la décoration (Bold, Italique et souligné), l'angle...
    J'utilise la structure LOGFONT et CreateFontIndirect(...).
    Utilisé avec un CDC * de Fenêtre (CDialog, CView....), le Texte est Antialiasé.

    Sur un CDC mémoire crée à partir du DC CreateCompatibleDC(NULL ) le texte n'est pas antialiasé (Avec les mêmes params);

    En fait j'ai pensé que en mémoire les DC ne géraient pas l'alpha ou un truc du genre, mais dans la MSDN, il est dit :

    A pointer to a device context. If pDC is NULL, the function creates a memory device context that is compatible with the system display.
    Or étant sous XP, il ne devrait pas y avoir de problème de transparence...A moins que cela n'ai rien avoir....

    Si quun à une idée, elle est bienvenue...

    Remarque : je peut pas avoir de dialogue car je suis dans une DLL ISAPI ?

  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,
    tu n'as pas oublié de selectionner la fonte dans le DC ?

  3. #3
    Membre chevronné
    Avatar de matazz
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    471
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 471
    Par défaut
    Je l'ai pas mis mais je fait bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    		pOldFont = (HFONT)pDC->SelectObject(m_Font);

  4. #4
    Membre confirmé
    Inscrit en
    Juillet 2003
    Messages
    196
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 196
    Par défaut
    Slt

    Poste de travail -> propiétés -> Avancé -> (Performances paramètres)
    -> Effets visuels ->Lisser les polices d'écran.

  5. #5
    Membre chevronné
    Avatar de matazz
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    471
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 471
    Par défaut
    Citation Envoyé par LDDL
    Slt

    Poste de travail -> propiétés -> Avancé -> (Performances paramètres)
    -> Effets visuels ->Lisser les polices d'écran.
    j'ai vérifié, c'est bien coché.
    De toute façon, quand je dessine ma font sur un DC d'une dialogBox, c'est lissé, mais quand je le faite en mémoire ça l'ai pas.
    Cela vient peut-être de ça d'ailleurs, cad que quand je dessine pour un DialogBox c'est lissé grace à ce param et quand je le fait en mémoire ça l'ai pas...

  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,
    la fonte est bien selectionnée dans le dc en memoire ? (je sais j'insiste)

  7. #7
    Membre chevronné
    Avatar de matazz
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    471
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 471
    Par défaut
    ben oui, de toute façon mon texte se dessine bien en mémoire donc il la sélectionné a moins qu'il prenne la font par défaut...
    Je vais faire un essai avec une fonte autre qu'Arial et Times New Roman...

  8. #8
    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
    si la fonte n'est pas selectionnée il prend la fonte par défaut .

  9. #9
    Membre chevronné
    Avatar de matazz
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    471
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 471
    Par défaut
    j'ai essayé avec "Comic Sans MS" et c'est pareil !!!!!
    Mon texte est bien déssiné en Comic Sans MS mais pas Antialiasé, je commence à croire que c'est du au fait que Windows XP applique un rendu spécifique, je vais essayer sur 98 et 2000...

  10. #10
    Membre chevronné
    Avatar de matazz
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    471
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 471
    Par défaut
    Citation Envoyé par LDDL
    Slt

    Poste de travail -> propiétés -> Avancé -> (Performances paramètres)
    -> Effets visuels ->Lisser les polices d'écran.
    C'est toi qui a raison, j'ai désactivé cette option, et là le texte n'est pas antialiasé, comme lorsque je déssine en mémoire...
    Donc c'est XP qui intervient sur le dessin...
    Il va faloir qe je me tappe l'antialisaing !!!!!

  11. #11
    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
    re,
    je suis quand meme etonné de ce probleme ,
    que la creation d'un DC en memoire + une selection de fonte ne gere pas le antialiasing .
    tu es sur de la validité de ta fonte comment tu la constitue ?
    note dans la faq il y a un post pour la recuperation d'une fonte systeme par son nom...


  12. #12
    Membre chevronné
    Avatar de matazz
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    471
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 471
    Par défaut
    je sais je l'ai regardé, je peut te mettre le code demain, mais ça ressemble beaucoup a ce qu'il y a dans la faq.
    Par contre je travaille sous VC++ 6.0, et j'ai pas le GDI+. Je sais pas si ça y joue.

  13. #13
    Membre chevronné
    Avatar de matazz
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    471
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 471
    Par défaut
    Bon ben comme promis :
    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
    		HDC pDC;
    		if (hdc) pDC=hdc; else pDC = ::GetDC(0);
    		HDC TmpDC=CreateCompatibleDC(pDC);
    		//choose the font
    		HFONT m_Font;
    		LOGFONT* m_pLF;
    		m_pLF=(LOGFONT*)calloc(1,sizeof(LOGFONT));
    		strncpy(m_pLF->lfFaceName,font,31);
    		m_pLF->lfHeight=lSize;
    		m_pLF->lfWeight=lWeight;
    		m_pLF->lfItalic=bItalic;
    		m_pLF->lfUnderline=bUnderline;
    		m_pLF->lfQuality = PROOF_QUALITY;
    		m_pLF->lfOutPrecision = OUT_TT_ONLY_PRECIS;
    		m_pLF->lfClipPrecision = CLIP_LH_ANGLES | CLIP_DEFAULT_PRECIS;
    		m_pLF->lfPitchAndFamily = TRUETYPE_FONTTYPE;
    		m_Font=CreateFontIndirect(m_pLF);
    		//select the font in the dc
    		HFONT pOldFont=NULL;
    		if (m_Font)
    			pOldFont = (HFONT)SelectObject(TmpDC,m_Font);
    		else
    			pOldFont = (HFONT)SelectObject(TmpDC,GetStockObject(DEFAULT_GUI_FONT));
     
    		//Set text color
    		SetTextColor(TmpDC,RGB(255,255,255));
    		SetBkColor(TmpDC,RGB(0,0,0));
    		//draw the text
    		SetBkMode(TmpDC,OPAQUE);
    		//Set text position;
    		RECT pos = {0,0,0,0};
    		long len = strlen(text);
    		::DrawText(TmpDC,text,len,&pos,0);
     
    		//::TextOut( TmpDC, x, y ,text,len);
    		pos.right+=pos.bottom; //for italics

  14. #14
    Membre chevronné
    Avatar de matazz
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    471
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 471
    Par défaut
    je vais mettre le post résolu, mais bon il va falloir que je me tappe la récupération des Glyphe de chaque lettre!!!!

  15. #15
    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,
    tu as essayé (au cas ou ) avec la recuperation du parametrage d'une fonte systeme voir faq ?
    on ne sait jamais .

  16. #16
    Membre chevronné
    Avatar de matazz
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    471
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 471
    Par défaut
    je vais regarder...

  17. #17
    Membre chevronné
    Avatar de matazz
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    471
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 471
    Par défaut
    Bon ben c'étais tout con :

    il fallait remplacer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     m_pLF->lfQuality = PROOF_QUALITY;
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     m_pLF->lfQuality = ANTIALIASED_QUALITY;
    sauf que dans ma MSDN je n'avais que :
    DEFAULT_QUALITY, DRAFT_QUALITY et PROOF_QUALITY !!!

    Cette fois il est vraiment résolu.

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

Discussions similaires

  1. [MFC] Mettre une fonte par défaut.
    Par pier* dans le forum MFC
    Réponses: 1
    Dernier message: 09/11/2007, 17h29
  2. [MFC] Augmenter la taille des fonts
    Par OverLorD34 dans le forum MFC
    Réponses: 3
    Dernier message: 06/04/2006, 10h28
  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. [MFC] Comparaison de Font
    Par nico-pyright(c) dans le forum MFC
    Réponses: 7
    Dernier message: 11/02/2004, 09h18
  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