wxDev.fr, le portail francophone consacré à wxWidgets ! ( The french portal for wxWidgets )  
Esp. membre
Recheche rapide



Recherche avancée
Statistiques
Membres inscrits :2359

Membres en ligne : 0
Invités en ligne : 1

Valid XHTML 1.0 Transitional

Valid CSS2

Menu forum (navigation):
Pages: 1  
 
Accueil » Accueil forums » Développement C/C++
» Impression
Conversation : Impression
21-07-2010 10:40:54  Impression #1
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!
21-07-2010 11:15:41  Re: Impression #2
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
21-07-2010 11:54:15  Re: Impression #3
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)

21-07-2010 15:31:21  Re: Impression #4
guyothomas (Membre)
Inscrit le : 05-06-2008
Messages: 66
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.
21-07-2010 16:24:19  Re: Impression #5
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
21-07-2010 17:25:31  Re: Impression #6
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
22-07-2010 09:00:11  Re: Impression #7
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?
22-07-2010 10:01:38  Re: Impression #8
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1375
Snippets: 25
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à...
22-07-2010 12:29:39  Re: Impression #9
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 ^^
22-12-2010 12:29:46  Re: Impression #10
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?
Menu forum (navigation):
Pages: 1  
 
Accueil » Accueil forums » Développement C/C++
» Impression