Bonjour � tous,

Je cherche � r�aliser une impression particuli�re avec C++Builder 5.

Je dois sur la feuille A4 qui sort de l'imprimante imprimer quelques infos texte dans la zone la plus en haut de la feuille, une image bitmap au centre ( qui prendra le + de place ) et peut �tre quelques infos texte en bas de la page.

J'ai parcouru plusieurs tutoriels mais sans vraiment tout � fait arriver � mes fins.

Mon probl�me est l'insertion du bitmap � la bonne taille et de facon compl�te. Donc �vitons de parler de l'impression du texte, mon probl�me est ailleurs.

Dans mon code j'ai tent� d'utiliser plusieurs m�thodes sur le Canvas de l'imprimante.

Ma 1�re solution :
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
{ 
 
Graphics::TBitmap* Bitmap = new Graphics::TBitmap(); 
 
Bitmap->LoadFromFile("C:\\TestCCQ.bmp"); 
 
Printer()->Orientation = poLandscape; 
 
Printer()->BeginDoc(); 
 
Printer()->Canvas->CopyRect(Printer()->Canvas->ClipRect,Bitmap->Canvas,Bitmap->Canvas->ClipRect); 
 
Printer()->EndDoc(); 
 
}
Ce code lance une impression de mon Bitmap en paysage sur tout la partie imprimable de la feuille.

Mon bitmap est donc �tir� si la partie imprimable sur l'imprimante est sup�rieure au bitmap.

Mon bitmap est donc r�tr�ci si la partie impribale sur l'imprimante est inf�rieure au bitmap.

Cette solution ne me convient pas car je veux pouvoir imprimer du texte sur la feuille en dessus et en dessous de limage.

Ma 2�me solution :

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
{ 
 
Graphics::TBitmap* Bitmap = new Graphics::TBitmap(); 
 
Bitmap->LoadFromFile("C:\\TestCCQ.bmp"); 
 
Printer()->Orientation = poLandscape; 
 
Printer()->BeginDoc(); 
 
Printer()->Canvas->Draw(0,0,Bitmap);; 
 
Printer()->EndDoc(); 
 
}
Ce code lance une impression de mon Bitmap en paysage sur une toute petite partie imprimable de la feuille.

Mon Bitmap est imprim� en entier mais l'image sur la feuille est r�duite.

Sur les 21cm x 29.7cm de la feuille A4, mon image prend environ 4cm x 6cm

Cette solution me convient un peu mieux mais l'image est encore trop petite.

A ce niveau la il ya peut etre quelque chose � faire pour augmenter la taille ou d�placer l'image mais je n'ai pas r�ussi.

Les z�ros en parametre de la fonction Draw sont les coordon�es de depart de l'impression de mon bitmap.

(0,0) imprimera tout en haut a gauche , sur les bords de la feuille.

(100,100) imprimera � partir de 100 pixels du bord haut et 100 pixels du bord gauche.


J'ai ensuite essay� d'utiliser cette m�thode pour redimensionner le canvas :

Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
{ 
 
Bitmap->Canvas->StretchDraw(Printer()->Canvas->ClipRect, Bitmap); 
 
}
Mais en fonction de la position de l'appel � cette m�thode dans le code :

la zone imprimable de la feuille est r�duite sans que l'image le soit;

ou la zone imprimable de la feuille est au maximum mais le bitmap est aussi etir� de la meme facon aux m�mes proportions donc incomplet.



Voil� je fais appel au savoir de tous ceux qui liront ce message.

Pour r�capituler, mon probl�me est que je suis incapable de dimensionner la taille et la position du mon Bitmap sur le canvas de l'imprimante.

Si quelqu'un sait comment imprimer � sa guise un bitmap redimensionn� et positionn� sur la feuille A4, en ayant plac� au dessus et en dessous de l'image du texte personnalis� , vous m'aideriez beaucoup.

Merci d'avance .