IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++Builder Discussion :

Impression d'une image


Sujet :

C++Builder

  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 122
    Par défaut Impression d'une image
    Voila, suite a un traitement, j'ai une image que je suis succeptible d'imprimer, mais j'aimerais savoir comment on fait pour l'imprimer, quelque soit la taille, sur une seule page!

  2. #2
    Expert confirmé

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par défaut
    Tu peut utiliser la classe TPrinter, il suffit de mettre dans le canvas de ton TPrinter une image grace a la fonction DrawFocusRect, en lui spécifiant le rectangle dans lequel tu veut qu'elle s'affiche (Objet TRect qui spécifie les taille de la largeur et de la hauteur)

  3. #3
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 122
    Par défaut
    en regardant la classe TPrinter, j'ai vu canvas comme tu me l'avais dit

    si je met le code la, ca marcherai? Image1 est une image avec proportional true
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    void __fastcall TForm1::Button1Click(TObject *Sender)
     
        {
            TPrinter Prntr = Printer();
            Image1->Width = Prntr->PageWidth;
            Image1->Height = Prntr->PageHeight;
            Prntr->BeginDoc();
            Prntr->Canvas = Image1->Canvas);
            Prntr->EndDoc();
    }

  4. #4
    Expert confirmé

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par défaut
    Tu peut essayer, a mon avis ca imprimerait bien l'image mais cela ne serai pas proportionnel a ta feuille, pour cela il faut vraiment utiliser la fonction que je t'ai donné.

  5. #5
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 122
    Par défaut
    je travaillerai ca demiain, je mettrait mon resultat quand j'aurai troouvé^^

  6. #6
    Expert confirmé

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par défaut
    Excuse moi, la fonction est StretchDraw

    Le code n'est pas très compliqué :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
            TPrinter Prntr = Printer();
            TRect Rect ;
            //Definir le coordonnée du Rect.
            Image1->Width = Prntr->PageWidth;
            Image1->Height = Prntr->PageHeight;
            Prntr->BeginDoc();
            Prntr->Canvas->StretchDraw(Image1->Picture,Rect);
            Prntr->EndDoc();
    }

  7. #7
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 122
    Par défaut
    Citation Envoyé par pottiez
    Excuse moi, la fonction est StretchDraw

    Le code n'est pas très compliqué :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
            TPrinter Prntr = Printer();
            TRect Rect ;
            //Definir le coordonnée du Rect.
            Image1->Width = Prntr->PageWidth;
            Image1->Height = Prntr->PageHeight;
            Prntr->BeginDoc();
            Prntr->Canvas->StretchDraw(Image1->Picture,Rect);
            Prntr->EndDoc();
    }
    J'i essayé ton code, mais il ne fonctionne pas, tout d'abord, il faut metre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TPrinter *Prntr = Printer();
    ensuite pour la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Prntr->Canvas->StretchDraw(Image1->Picture,Rect);
    j'ai plein d'erreur, alors que faut-il mettre a la place pour avoir une bonne compilation?

  8. #8
    Expert confirmé

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par défaut
    Effectivement, il manqué une * désolé.

    Citation Envoyé par Galkir
    j'ai plein d'erreur, alors que faut-il mettre a la place pour avoir une bonne compilation?
    Quel sont les messages d'erreur ?

  9. #9
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 122
    Par défaut
    Les erreurs sont
    Citation Envoyé par Erreurs
    [C++ Erreur] fich_etude.cpp(116): E2064 Impossible d'initialiser 'const TRect &' avec 'TPicture * const'
    [C++ Erreur] fich_etude.cpp(116): E2342 Mauvaise correspondance de type dans le paramètre 'Rect' ('const TRect &' désiré, 'TPicture *' obtenu)
    [C++ Erreur] fich_etude.cpp(116): E2034 Impossible de convertir 'TRect' en 'TGraphic *'
    [C++ Erreur] fich_etude.cpp(116): E2342 Mauvaise correspondance de type dans le paramètre 'Graphic' ('TGraphic *' désiré, 'TRect' obtenu)
    Touste les erreurs sont a la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Prntr->Canvas->StretchDraw(Image1->Picture,Rect);

  10. #10
    Expert confirmé

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par défaut
    Euh normal, j'ai inversé le Rect et le Image1->Picture, il faut remplacer cette ligne par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Prntr->Canvas->StretchDraw(Rect,Image1->Picture);
    Désolé encore une fois

  11. #11
    CGi
    CGi est déconnecté
    Expert confirmé
    Avatar de CGi
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 061
    Détails du profil
    Informations personnelles :
    Localisation : France, Allier (Auvergne)

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 061
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Prntr->StretchDraw(Rect, Image1->Picture->Bitmap);
    Site : http://chgi.developpez.com

    Pourquoi faire simple quand on peut faire compliqué ? (Jacques Rouxel)

  12. #12
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 122
    Par défaut
    merci, la compilation fonctionne, mais a l'execution, aucune image n'apparait.

    j'utilise cute pd writer (pour ne pas gacher de feuilles) et il me cré une page blanche de 600ko

    j'ai quand même essayer de trouver ue autre solution, mais celle ci s'avère etre longue, et la taille de l'image n'est pas tres grande (environ 6*4 cm pour une image en 1392*1040 pixels.taille = 5.93Mo)

    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
    16
    17
    18
    19
    20
    21
    22
     
            TPrinter *Prntr = Printer();
            TRect rec = Rect(100, 100, Prntr->PageWidth - 100, Prntr->PageHeight - 100);
            if (Image1->Width > Prntr->PageWidth)
            {
                    Image1->Width = Prntr->PageWidth - 200;
                    Image1->Height = (Prntr->PageWidth - 200) * (HeightImage1 / WidthImage1);
            }
            if (Image1->Height > Prntr->PageHeight)
            {
                    Image1->Width = (Prntr->PageHeight - 200) * (WidthImage1 / HeightImage1);
                    Image1->Height = Prntr->PageHeight - 200;
            }
            Prntr->BeginDoc();
            for (int y = 0; y < Image1->Height; y++)
            {
                    for (int x = 0; x < Image1->Width; x++)
                    {
                            Prntr->Canvas->Pixels[x+200][y+200] = Image1->Canvas->Pixels[x][y];//StretchDraw(rec,Image1->Picture->Bitmap);
                    }
            }
            Prntr->EndDoc();

  13. #13
    Expert confirmé

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par défaut
    Je comprand pas trop pourquoi ca fonctionne pas, je verifirai sur mon programme ce soir, je ne l'ai pas avec moi au boulot.

  14. #14
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 122
    Par défaut
    J'ai mal préciser les choses :

    pour la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Prntr->Canvas->StretchDraw(Rect,Image1->Picture);
    j'ai les erreurs
    [C++ Avertissement] fich_etude.cpp(82): W8018 Affectation de int en TColor
    [C++ Erreur] fich_etude.cpp(116): E2034 Impossible de convertir 'TPicture * const' en 'TGraphic *'
    [C++ Erreur] fich_etude.cpp(116): E2342 Mauvaise correspondance de type dans le paramètre 'Graphic' ('TGraphic *' désiré, 'TPicture *' obtenu)
    et pour la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Prntr->Canvas->StretchDraw(Rect, Image1->Picture->Bitmap);
    la compilation se fait, mais je n'ai aucun résultats sur ma page pdf!

Discussions similaires

  1. Réponses: 5
    Dernier message: 21/01/2007, 19h31
  2. Impression d'une image pleine page
    Par Cyrilh7 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 07/11/2005, 09h18
  3. Enlever le boutton impression sur une image !
    Par Gab-Gab dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 13/11/2004, 23h30
  4. [BPW] Impression d'une image BMP
    Par Alcatîz dans le forum Turbo Pascal
    Réponses: 13
    Dernier message: 21/08/2003, 14h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo