Membres inscrits :596
Membres en ligne : 0
Invités en ligne : 5


|
| Conversation : Impression |
alexandre04 (Nouveau membre)
Inscrit le : 13-07-2010
Messages: 7
Snippets: 0
Tutoriels: 0
Hors ligne |
Bonjour,
Je dois actuellement programmer l'impression d'une fiche de bilan, qui est composé d'un tableau de 22 lignes sur 6 colonnes. Le codage me parait très lourd, et avant de me lancer j'aimerai avoir votre avis sur la question. Ne serait-ce pas possible de créer un modal normal, dans lequel je pourrai remplir tout mon tableau en utilisant les objets du rad, puis faire une sorte de print écran que j'exporterai en BMP, puis simplement lancer l'impression de ce bmp?
Placer les plus de 100 informations au pixel près me parait lourd, c'est pourquoi je vous demande s'il n'existe pas une solution plus pratique.
Merci d'avance!
| |
|
Sem (Membre)
Inscrit le : 31-05-2008
Messages: 64
Snippets: 0
Tutoriels: 0
Hors ligne |
bonjour, pour ce qui est des impressions tu as wxHtmlEasyPrinting ou wxHtmlPrintout qui est un bon compromis il me semble.
Exemple ( non testé ):
Code wxWidgets:// Déclaration class Bilan : public wxHtmlPrintout { public: Bilan(double datas[22][6]); }; // Implémentation Bilan::Bilan(double datas[22][6]) : wxHtmlPrintout(wxS("Bilan")) { wxString HtmlCode = wxEmptyString; HtmlCode = wxS("<table>"); for(size_t line = 0; line < 22; ++line) { HtmlCode += wxS("<tr>"); for(size _t col = 0; col < 6; ++col) { HtmlCode += wxString::Format(wxS("<td>%.2f</td>"), datas[line][col]); } HtmlCode += wxS("</tr>"); } HtmlCode += wxS("</table>"); SetHtmlText(HtmlCode); } // Utilisation wxPrinter printer; Bilan bilan(datas); printer.Print(this, &bilan, true);
j'espère ca puisse t'aider, bien sur y a plein d'autres façons de faire, tu peux également faire une classe surchargeant wxPrintout et gérer tout à la main, où utiliser wxHtmlDCRenderer pour la partie tableau. Tu peux également voir du coté des RichText, etc... Sem
| |
|
alexandre04 (Nouveau membre)
Inscrit le : 13-07-2010
Messages: 7
Snippets: 0
Tutoriels: 0
Hors ligne |
Ok merci je vais essayé de voir tout ça. Je vous tiens au courant ici! ---------- C'est vraiment galère en fait. Est ce que quelqu'un saurait comment faire un printecran, pour ensuite l'envoyer vers l'imprimante? ---------- C'est vraiment galère en fait. Est ce que quelqu'un saurait comment faire un printecran, pour ensuite l'envoyer vers l'imprimante?
Dernière modification par alexandre04 (21-07-2010 14:46:12)
| |
|
guyothomas (Membre)
Inscrit le : 05-06-2008
Messages: 65
Snippets: 0
Tutoriels: 0
Hors ligne |
wxSalut, j'avais récupéré ce "cours" à l'époque (il y a moins d'un an). ça pourra sûrement t'aider.
Thomas.
| |
|
alexandre04 (Nouveau membre)
Inscrit le : 13-07-2010
Messages: 7
Snippets: 0
Tutoriels: 0
Hors ligne |
Merci beaucoup, je vais prendre le temps de lire ça, et encore une fois je vous tiens au courant
| |
|
Sem (Membre)
Inscrit le : 31-05-2008
Messages: 64
Snippets: 0
Tutoriels: 0
Hors ligne |
bonjour, tu peux tjrs capturer le wxClientDC du widget où y a ton tableau et faire un blit sur le wxPrintDC, Sem
| |
|
alexandre04 (Nouveau membre)
Inscrit le : 13-07-2010
Messages: 7
Snippets: 0
Tutoriels: 0
Hors ligne |
Ok merci je pense que je vais faire ça, créer un wxDialog et le récupérer puis faire un blit. Mais encore une question, l'écran sur lequel le dialog est dessiné fait 10 pouces, et j'aimerai faire une impression A4, est il possible de l'agrandir pour le mettre à la taille voulue?
| |
|
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1146
Snippets: 23
Tutoriels: 6
Site web
Hors ligne |
Salut.
Si tu veux redimensionner la capture avant de l'imprimer, il faut que tu passes par un wxBitmap (tu ne le crées qu'en mémoire, ce n'est pas la peine de l'enregistrer). Voici (en gros) la méthode à suivre : - Tu récupères le wxClientDC de la fenêtre à capturer (ou le wxWindowDC si tu veux imprimer toute la fenêtre) - A partir de la taille du wxDC obtenu, tu crées en wxBitmap en mémoire de la même taille - Tu sélectionnes le wxBitmap avec un wxMemoryDC - Tu "Blit" du wxDc source ves le wxDC destination - Tu désélectionnes le wxBitmap pour libérer le wxMemoryDC (en sélectionnant par exemple un wxNullBitmap) - Tu crées un wxImage à partir du wxBitmap - Tu redimensionnes la wxImage à la taille voulue - Tu fais enfin un DrawBitmap avec le wxDC de l'imprimante
@+ Xav'
|
Le nouveau portail wxWidgets francophone : www.wxdev.fr Ben en fait, vous y êtes déjà...
|
alexandre04 (Nouveau membre)
Inscrit le : 13-07-2010
Messages: 7
Snippets: 0
Tutoriels: 0
Hors ligne |
waouw... Merci beaucoup pour toutes ces explications! Je suis actuellement entrain de créer les quatre dialog que j'imprimerai ensuite. Donc je vous tiens au courant dès que je peux, histoire (je l'espère) de fêter une réussite tous ensemble ^^
| |
|
sajaris (Membre)
Inscrit le : 23-11-2010
Messages: 47
Snippets: 0
Tutoriels: 0
Hors ligne |
bonjour,
ce post est vieu mais vous pourrez peut etre m'aider. Je voulais aussi imprrimer un tableau de puslieur ligne. j'y arrive bien avec wxhtmlprintout.
Le seul hic est que entre les page imprimer, il y a souvent des coupre du tableau: le tableau est ouvert vers le ba de page et continue sur la page suivante, ou est fermer sur le bas st est ouvert sur la page suivante, je sais pas comment gerer cela;
J'ai d'abord derivé le wxhtmlprintout et maintenant j'arrive a fermer les page superieur pas un GetDC()->DrawLine a une position que je calcul qui me donne le haut de la page. Mais pour le ba je fais pareil mais quand la ligne du bas est deja fermer cela fait une ligne supplementaire BIEN VISIBLE et detaché.
Que faire, ya t'il une autre solution?
| |
|
|