Bonjour,
Il y a forcément quelque chose que je n'ai pas encore bien compris concernant l'utilisation des devices contextes et des bitmaps.
Ma solution 1 fonctionne correctement en me fournissant un simple contour d'ellipse avec la phrase "ceci est une page de test" au milieu (c'est ce que je veux), alors que avec la solution 2 j'obtiens une ellipse coloriée en blanc à l'intérieur et en noir à l'extérieur sur toute la page. Ce qui fait que le micro a mouliné pendant 5mn avant de sortir quelque chose et le texte "page de test" n'apparaît pas, je suppose qu'il est caché par l'ellipse.
Etait-ce bien ce qu'il fallait faire dans la solution 2? Et n'est-il pas possible d'obtenir seulement un contour avec la solution 2 ?
Merci
********** Solution 1 (qui fait ce que je veux): ********** (prd.hDc est le device contexte de l'imprimante)
******************************************
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 larg=GetDeviceCaps(prd.hDC, HORZRES); haut=GetDeviceCaps(prd.hDC, VERTRES); SetRect(&rect,larg*marges,haut*marges,larg-(larg*marges*2),haut-(haut*marges*2)); if ( StartDoc( prd.hDC, &di ) > 0 ) { StartPage( prd.hDC ); Ellipse(prd.hDC,0,0,larg,haut); DrawText(prd.hDC,"Ceci est une page de test",-1,&rect,DT_SINGLELINE | DT_VCENTER | DT_CENTER); EndPage( prd.hDC ); EndDoc( prd.hDC ); }
******** Solution 2 (qui remplit en noir et blanc) ***********
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 larg=GetDeviceCaps(prd.hDC, HORZRES); haut=GetDeviceCaps(prd.hDC, VERTRES); SetRect(&rect,larg*marges,haut*marges,larg-(larg*marges*2),haut-(haut*marges*2)); hbm=CreateCompatibleBitmap(prd.hDC, rect.right, rect.bottom); hDCmem = CreateCompatibleDC(prd.hDC); SelectObject(hDCmem, hbm); Ellipse(hDCmem,rect.left,rect.top,rect.right,rect.bottom); DrawText(hDCmem,"Ceci est une page de test",-1,&rect,DT_SINGLELINE | DT_VCENTER | DT_CENTER); if ( StartDoc( prd.hDC, &di ) > 0 ) { StartPage( prd.hDC ); BitBlt(prd.hDC,0,0,larg,haut,hDCmem,0,0,SRCCOPY); EndPage( prd.hDC ); EndDoc( prd.hDC ); } DeleteDC( hDCmem );
Partager