salut,
j'ai utilisé le code donné par Farscape sur la FAQ (http://c.developpez.com/faq/vc/?page...intDialgoBox).
et l'image imprimée est toute petite (environ 1.5cm). J'ai raté quelquechose ?
Version imprimable
salut,
j'ai utilisé le code donné par Farscape sur la FAQ (http://c.developpez.com/faq/vc/?page...intDialgoBox).
et l'image imprimée est toute petite (environ 1.5cm). J'ai raté quelquechose ?
salut,
il faut dilater le bitmap en fonction de la resolution de l'imprimante ,dans la faq j'ai juste centré le bitmap resultant sur la feuille.
en changeant le rectangle d'impression on zoom le bitmap...
:D
hm hm, alors je vais avoir un pb si je ne connais pas la résolution des imprimantes utilisées ?
comment chopper cette info et l'intégrer dans mon code ?
tu l'a dans mon post ! avec getdevicecaps :D
ok, alors si c'est dans le code, pourquoi ça le fait pas ?
hum on reprend ,
si tu lis bien le code de la faq qui est commenté ,
je prends le bitmap je regarde sa taille et je le centre sur la feuille point.
il faut rappeler que un ecran c'est entre 200 et 250 dpi et une imprimante laser entre 600 et 1200 dpi voir plus.
donc si ton bitmap fait 100* 200 pixels une sur une surface de 6000 * xx pixels il sera petit .
il suffit de specifier le ration en changeant le rectangle d'impression:
:DCode:
1
2
3
4
5 // rectangle d'impression CRect rect; // le bitmap est centré !!!!! sans dilatation. rect.SetRect(CPoint(nX,nY),CPoint(nX+bmpInfo.bmWidth,nY+bmpInfo.bmHeight));
ok pour le principe.
j'ai testé
et j'ai pu voir le résultat. Mais en fait, le coefficient 5, je l'ai mis arbitrairement. Ca donne un bon résultat avec mon imprimante mais comment généraliser la mise à l'échelle pour toutes les imprimantes possibles et imaginables ?Code:
1
2
3 // rectangle d'impression CRect rect; rect.SetRect(CPoint(nX,nY),CPoint(nX+5*(bmpInfo.bmWidth),nY+5*(bmpInfo.bmHeight)));