Objet printer et fonction StretchBl

zone33 - 8 juin 2001 à 00:35
 stp - 8 juin 2001 à 00:50
Guillaume Picot 34 ans région parisienne (91)
J’ai un petit problème avec la fonction « StretchBlt » de la librairie GDI32.dll
Dans un programme de type PLANNING pour me simplifier la tache d’impression de ma grille crée avec un objet de type IMAGE j’ai utiliser la fonction « StretchBlt » pour transférer et redimensionner le contenue de ma grille « IMAGE.HDC » ver l’objet PRINTER « PRINTER.HDC » avec un sclamode=3 (PIXEL), les tests réalisés avec mon imprimante CANON BJC4300 sont parfait, en revanche les tests sur une imprimante HP laserJet 4500c
Ou autre imprimante qui ont une résolution différente de la mienne, me cause de gros problèmes.
J’ai essaye de jouer avec les propriétés ScaleMode ; ScaleWidth et ScaleHeight de l’objet printer … pas concluent.
Le meilleur résulta pour le cadrage et la taille de l’objet à imprimer a été obtenu avec un Printer.scalemode=3
Initialise deux variables pour les facteurs X Y
Mx = printer.scalewidth / (valeur de mon imprimante printer.scalewidth)
My = printer.scalheight / (valeur de mon imprimante printer.scaleheight)
Multiplication des valeurs initiales du programme par deux variables
Avant res = StretchBlt(Printer.hDC, 100 , 750 , 700, 2100, Form1.ppn.hDC, 0, 0, Form1.ppn.ScaleWidth, Form1.ppn.ScaleHeight, &HCC0020)
Aprés res = StretchBlt(Printer.hDC, 100 * mx, 750 * my, 700 * mx, 2100 * my, Form1.ppn.hDC, 0, 0, Form1.ppn.ScaleWidth, Form1.ppn.ScaleHeight, &HCC0020)

Si vous avez un truc pour réussir à coup sur une impression de se style et que vous éte un adepte du partage n’ésitez pas à me communiquer une réponse à

1 réponse

salut

Pour ce qui de ton calcul de coef multiplicateur c'est
ok sauf que tu as oublie un truc , le coef garantissant l'isotropie de ton image de ref.
pour régler le pb il faut prendre le min de mx et my.
De plus je tien à t'informer que de nombreux pb sont connu sur le site crosoft au sujet du printer : ex le hdc de l'objet printer change apres l'appel de plusieurs fonctions

dim Avant as long
dim Apres as long

Avant=printer.hdc
printer.line (10,10)-(10,100)
Apres=printer.hdc
msgbox cstr(avant) & "||" & cstr(apres)

Misere !!!!!

good luck
0
Rejoignez-nous