Salut,
je cherche a écrire du texte dans un CDC verticalement C'est possible ?
Sinon comment faire pour faire une rotation du CDC ?
Merci
Version imprimable
Salut,
je cherche a écrire du texte dans un CDC verticalement C'est possible ?
Sinon comment faire pour faire une rotation du CDC ?
Merci
oui c'est possible,
voir faq:
http://c.developpez.com/faq/vc/?page...s#VerticalFont
:D
Arf j'ai du mal avec la FAQ désolé ... je cherche jamais au bon endroit.
Merci !
heu ca marche pas ...
et dans l'aide msdn il y a ca :
Citation:
The DrawText function supports only fonts whose escapement and orientation are both zero.
je peux t'assurer que ça fonctionne j'utilise ce systeme dans un ActiveX.
les coordonnées de ton rectangle sont correctes ?
Quelle est la fonte utilisée ?
Comment tu l’as initialisée ?
:D
Voici ma fonction :
rect = rectOKCode:
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 HBITMAP CUtils::CreateImageTexte(CDC *pDC,CFont *pFont,CString csTexte,RECT rect) CDC dc; RECT rectOk; rectOk.left = 0; rectOk.top = 0; rectOk.right = 42; rectOk.bottom = 100; dc.CreateCompatibleDC( pDC ); HBITMAP hbmResult = ::CreateCompatibleBitmap(pDC->m_hDC, 42, 100); HBITMAP hbmOldSource = (HBITMAP)::SelectObject( dc.m_hDC, hbmResult); // reglage de la fonte en mode vertical: LOGFONT lf; //1 récupération des paramètres d'une CFont ou d'une fenêtre VERIFY(pFont->GetLogFont(&lf)); // 2 changement des valeurs lf.lfEscapement=900; lf.lfOrientation=900; lf.lfItalic=1; lf.lfStrikeOut=1; // Création de la nouvelle fonte CFont FontVert; VERIFY(FontVert.CreateFontIndirect(&lf)); CFont *pOldFont=dc.SelectObject(&FontVert); // Affichage final d'une chaîne stext, dans le rectangle rectText calculé au préalable bien sur. UINT nFormat=DT_LEFT|DT_SINGLELINE; dc.SetTextColor(RGB(255,255,255)); dc.SetBkColor(RGB(255,0,0)); dc.SetBkMode(TRANSPARENT); dc.DrawText(csTexte,&rect,nFormat|DT_CALCRECT); return hbmResult; }
merci de ton aide ...
tu peut essayer sans :
lf.lfItalic=1;
lf.lfStrikeOut=1;
le nom de ta fonte ? tu ne me l'a pas dit .
:D
j'ai enlever ce que tu me dis mais ca change rien.
ma font est : Ms Sans Serif.
ca a une importance la font ?
A noter que si j'enleve le "DT_CALCRECT" je vois le texte mais toujours en horizontal.
ben oui ,ce n'est pas une fonte true type !
je ne pense pas que ça fonctionne avec ce type de fonte.
essaye avec courier new par exemple.
exemple d'init logfont:
:DCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 lg.lfHeight=-12; lg.lfWidth=0; lg.lfEscapement=0; lg.lfOrientation=0; lg.lfWeight=400; lg.lfItalic=0; lg.lfUnderline=0; lg.lfStrikeOut=0; lg.lfCharSet=0; lg.lfOutPrecision=3; lg.lfClipPrecision=2; lg.lfQuality=1; lg.lfPitchAndFamily=49; strcpy(lg.lfFaceName,"Courier New");
bon je vois bien le texte avec le paramétrage que tu m'as donnée mais des que je mais 900 en orientation et escapement ben je vois plus le texte.
j'ai pas un probleme avec mon RECT ?
il faut bien sûr qu'il représente une surface verticale ....Citation:
Envoyé par ouquoi
:D
rectOk.left = 0;
rectOk.top = 0;
rectOk.right = 42;
rectOk.bottom = 100;
C'est bien vertical ca ?
En fait je vois un tout petit bout de texte (une ligne de pixel) tout en haut de mon rect.
ton systeme de coordonnées n'est pas inversé sur les y .?
essaye de dessiner un rectangle pour visualiser ta surface .
(CDC::Rectangle )
:D
Mon rectangle couvre bien la zone voulue.
si je fais un TextOut ca marche mais un drawtext je vois juste une bar.
c normal que je sois obliger de faire avec un textout ?
c'est bizarre ...
:D