Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
933 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [MFC/VC++] CScrollView/Garder une taille de police constante

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[MFC/VC++] CScrollView/Garder une taille de police constante

n°873830
Yoyo@
Posté le 15-10-2004 à 07:52:54  profilanswer
 

Bonjour,  
 
Voici mon probleme.  
 
Mon appli est basée sur une CScrollView, avec un zoom personnalisé.  
 
Pour la gestion du zoom, j'tilise entre autre dans mon OnPrepareDC ces appels:  
 
 

Code :
  1. pDC->SetMapMode(MM_ISOTROPIC);
  2. pDC->SetWindowExt(m_totalLog);
  3. pDC->SetViewportExt(m_totalDev);


 
En faisant grossir m_totalDev pour obtenir l'effet de zoom désiré.  
 
Seulement, lorsque dans mon OnDraw, je créée une police, la sélectionne et écrit avec, je n'obiens pas un effet constant, la taille logique de la chaine de caractere semblant changer legerement entre les differents niveaux de zoom.  
 
Ainsi, dans mon OnDraw(),  
 

Code :
  1. CFont fnt;
  2. fnt.CreateFont(45, 0, 0, 0, FW_NORMAL, FALSE, FALSE, 0, ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, FF_SWISS+VARIABLE_PITCH, "Courrier" );
  3. CFont* pOldFont = pDC->SelectObject(&fnt);
  4. pDC->TextOut(0,0, "ppda" );
  5. CSize size = pDC->GetTextExtent("ppda" );


 
 
va me donner une taille oscillant legerement selon les niveaux de zoom,  
88,45 au début, puis 90.45, etc, etc...ce qui fait que mon affichage differe legerement selon le niveau de zoom (par exemple, le texte va sortir de son cadre, etc...)  
 
Est ce normal?

mood
Publicité
Posté le 15-10-2004 à 07:52:54  profilanswer
 

n°875576
dans
Posté le 18-10-2004 à 09:02:47  profilanswer
 

Choisi une autre fonte, où remplace OUT_DEFAULT_PRECIS par OUT_TT_PRECIS ou OUT_TT_ONLY_PRECIS pour forcer une fonte TrueType.

n°875595
Yoyo@
Posté le 18-10-2004 à 09:42:49  profilanswer
 

dans a écrit :

Choisi une autre fonte, où remplace OUT_DEFAULT_PRECIS par OUT_TT_PRECIS ou OUT_TT_ONLY_PRECIS pour forcer une fonte TrueType.


 
Je viens d'essayer de renplacer OUT_DEFAULT_PRECIS par OUT_TT_PRECIS ou OUT_TT_ONLY_PRECIS, mais le "symptome" ne disparait pas, j'ai toujours des tailles changeantes...
 
Par quelle police pourrais je essayer de remplacer on "Courrier"?
 
Ca fait en tout cas plaisir de voir une reponse arriver...

n°875678
gilou
Modérateur
Modzilla
Posté le 18-10-2004 à 10:40:10  profilanswer
 

> Par quelle police pourrais je essayer de remplacer on "Courrier"?  
 
"Courier New" est TTF. Et la police Courier ne prend qu'un seul r au milieu.
A+,


Message édité par gilou le 18-10-2004 à 10:42:24

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°875714
Yoyo@
Posté le 18-10-2004 à 10:52:11  profilanswer
 

D'accord,
 
Meme en faisant :
 

Code :
  1. myFont.CreateFont(16, 0, 0, 0, FW_NORMAL, FALSE, FALSE, 0, ANSI_CHARSET, OUT_TT_ONLY_PRECIS , CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, FF_SWISS+VARIABLE_PITCH, "Courier" );


 
Ca ne change rien...

n°875926
gilou
Modérateur
Modzilla
Posté le 18-10-2004 à 13:56:31  profilanswer
 

Oui, Courier etant une fonte a taille(s) fixe c'est pas étonnant. Et si tu essayais ce que je t'ai dit: "Courier New"...
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°875951
Yoyo@
Posté le 18-10-2004 à 14:15:38  profilanswer
 

Oups, je n'avais pas vu la nuance.
 
Je viens donc d'essayer avec "Courier News" et...le probleme reste le meme.
 
Pour info, voici ce que me donne ma fenetre de Debug :
 

Code :
  1. [904] Text Extent: <100 45>
  2. [904] Text Extent: <99 45>
  3. [904] Text Extent: <102 45>


 
lorsque je fais dans mon Ondraw:
 

Code :
  1. pDC->TextOut(0,0, "ppda" );
  2. CSize size = pDC->GetTextExtent("ppda" );
  3. TRACE("Text Extent: <%d %d>\n", size.cx, size.cy);


 
Et ce, apres trois zooms successifs.
 
Vous voyez donc, la meme chaine prends trois tailles logiques différentes alors qu'elle ne devrait pas...
Pour info, je sélectionne ma fonte dans mon DC lors du OnPrepareDC (mais je ne pense pas que ca change grand chose)

n°876082
gilou
Modérateur
Modzilla
Posté le 18-10-2004 à 15:47:37  profilanswer
 

Changes le parametre FF_SWISS par FF_MODERN dans ton code, car le Courier New est associe a ce parametre.  
Je ne pense pas que ca aie une grande influence, mais sait on jamais...
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°876156
Yoyo@
Posté le 18-10-2004 à 16:17:23  profilanswer
 

Nan, tu l'as bien pressenti: ca n'a aucune influence.
 
Je suis vraiment étonné d'etre confronté a ce type de probleme! Je ne parviens pas a comprendre le pourquoi du comment...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [MFC/VC++] CScrollView/Garder une taille de police constante

 

Sujets relatifs
Limite de taille dans les arguments de fonctions[css] Petit problème de taille d'un div
Lister les noms de fichiers,taille,type d'un serveur http ?[C#] WebBrowser & encoding : limite de taille du contenu ?
[HTML/CSS] Problème taille police dans tableau sous IE [RESOLU]La taille maxi d'une BDD mysql
[VC++/MFC] Mise à niveau de VS6 vers MFC 7.1 ?Taille en mémoire d'un booléen
mon lien a href modifie la taille de la font 
Plus de sujets relatifs à : [MFC/VC++] CScrollView/Garder une taille de police constante


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR