Impression bitmap + texte (c++ builder 5)

bfespi69 Messages postés 3 Date d'inscription lundi 4 décembre 2000 Statut Membre Dernière intervention 22 septembre 2009 - 22 sept. 2009 à 15:30
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 - 27 sept. 2009 à 14:54
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 :
{

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 :

{

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 :

{

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 .

2 réponses

cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
26 sept. 2009 à 18:41
Salut,

StretchDraw prend en premier paramètre un rectangle. N'utilises pas le ClipRect du canvas, mais plutôt ton propre rectangle.
0
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
27 sept. 2009 à 14:54
Salut,
Je t'invite à t'inspirer de mon code source, en Win32, sur l'impression des images bitmap en espérant qu'il te sera utile:
IMPRIMEUR-IMAGES-BMP
0
Rejoignez-nous