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 régulier
    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
    Points : 89
    Points
    89
    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
    Responsable Magazine

    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 : 39
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Points : 22 087
    Points
    22 087
    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)
    Quand une réponse vous a été utile, pensez à utiliser le nouveau système de notation

    Lisez le magazine de developpez.com.
    Mes tutos : http://pottiez.developpez.com

    La FAQ BCB -> 642 Questions/Réponses, si vous voulez participer, contactez moi. Aide de BCB6 en français

    N'oubliez pas que l'aide existe et est affichée sous simple pression de la touche F1 , une touche c'est plus rapide que tout un message .

  3. #3
    Membre régulier
    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
    Points : 89
    Points
    89
    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
    Responsable Magazine

    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 : 39
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Points : 22 087
    Points
    22 087
    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é.
    Quand une réponse vous a été utile, pensez à utiliser le nouveau système de notation

    Lisez le magazine de developpez.com.
    Mes tutos : http://pottiez.developpez.com

    La FAQ BCB -> 642 Questions/Réponses, si vous voulez participer, contactez moi. Aide de BCB6 en français

    N'oubliez pas que l'aide existe et est affichée sous simple pression de la touche F1 , une touche c'est plus rapide que tout un message .

  5. #5
    Membre régulier
    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
    Points : 89
    Points
    89
    Par défaut
    je travaillerai ca demiain, je mettrait mon resultat quand j'aurai troouvé^^

  6. #6
    Responsable Magazine

    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 : 39
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Points : 22 087
    Points
    22 087
    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();
    }
    Quand une réponse vous a été utile, pensez à utiliser le nouveau système de notation

    Lisez le magazine de developpez.com.
    Mes tutos : http://pottiez.developpez.com

    La FAQ BCB -> 642 Questions/Réponses, si vous voulez participer, contactez moi. Aide de BCB6 en français

    N'oubliez pas que l'aide existe et est affichée sous simple pression de la touche F1 , une touche c'est plus rapide que tout un message .

  7. #7
    Membre régulier
    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
    Points : 89
    Points
    89
    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
    Responsable Magazine

    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 : 39
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Points : 22 087
    Points
    22 087
    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 ?
    Quand une réponse vous a été utile, pensez à utiliser le nouveau système de notation

    Lisez le magazine de developpez.com.
    Mes tutos : http://pottiez.developpez.com

    La FAQ BCB -> 642 Questions/Réponses, si vous voulez participer, contactez moi. Aide de BCB6 en français

    N'oubliez pas que l'aide existe et est affichée sous simple pression de la touche F1 , une touche c'est plus rapide que tout un message .

  9. #9
    Membre régulier
    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
    Points : 89
    Points
    89
    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
    Responsable Magazine

    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 : 39
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Points : 22 087
    Points
    22 087
    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
    Quand une réponse vous a été utile, pensez à utiliser le nouveau système de notation

    Lisez le magazine de developpez.com.
    Mes tutos : http://pottiez.developpez.com

    La FAQ BCB -> 642 Questions/Réponses, si vous voulez participer, contactez moi. Aide de BCB6 en français

    N'oubliez pas que l'aide existe et est affichée sous simple pression de la touche F1 , une touche c'est plus rapide que tout un message .

  11. #11
    CGi
    CGi est déconnecté
    Expert éminent
    Avatar de CGi
    Inscrit en
    Mars 2002
    Messages
    1 030
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 1 030
    Points : 8 316
    Points
    8 316
    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 régulier
    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
    Points : 89
    Points
    89
    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
    Responsable Magazine

    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 : 39
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Points : 22 087
    Points
    22 087
    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.
    Quand une réponse vous a été utile, pensez à utiliser le nouveau système de notation

    Lisez le magazine de developpez.com.
    Mes tutos : http://pottiez.developpez.com

    La FAQ BCB -> 642 Questions/Réponses, si vous voulez participer, contactez moi. Aide de BCB6 en français

    N'oubliez pas que l'aide existe et est affichée sous simple pression de la touche F1 , une touche c'est plus rapide que tout un message .

  14. #14
    Membre régulier
    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
    Points : 89
    Points
    89
    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