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

 Delphi Discussion :

Imprimer une image


Sujet :

Delphi

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 141
    Points : 40
    Points
    40
    Par défaut Imprimer une image
    Bonjour,

    Je vous explique mon souci.
    J'essai de faire une impression d'images en cascade.
    Sous Windows XP, je récupérais l'ensemble des images que je mettais dans un dossier temporaire et une fois la boucle finie, j'ouvrais la dernière image dans l'aperçu des télécopie windows.
    L'utilisateur n'avait plus qu'a suivre l'assistant et à sélectionner toutes les images du dossier.
    Sous Windows 7, l'aperçu des télécopies Windows ne fonctionnait plus de la même façon donc j'ai fais une boucle qui demande l'impression image par image via le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ShellExecute(Handle, 'print', PAnsiChar(chemin), '','', SW_HIDE) <= 32 then ShowMessage(SysErrorMessage(GetLastError));
    Ce code ouvre donc l'aperçu des télécopies windows pour chaque image et l'utilisateur doit cliquer sur imprimer.

    Mon problème que lorsque le nombre d'image est important.
    Il peut y avoir jusqu'à 100-150 images à imprimer et dans ce cas au bout de quelques images l'utilisateur n'ayant pas le temps de cliquer sur chaque bouton imprimer l'application sature.

    Est ce qu'il existe un moyen de pouvoir lancer la fonction imprimer directement sans passer par l' assistant ?

    Je m'étais dit que peut être en passant par Paint je n'aurais pas le souci mais je n'arrive pas a définir Paint comme étant le programme d'impression par défaut pour mon application et si je met Paint comme étant le programme par défaut pour ouvrir les images alors le shellexecute (...'open'...) ne fonctionne plus sur les fichiers image.
    As-t-on un moyen de faire cela ?

    Merci pour votre aide

  2. #2
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 430
    Points
    28 430
    Par défaut
    et bien il suffit d'utiliser la fontion Printer de l'unité Printers qui retourne un objet TPrinter qui possède un Canvas

    voici un exemple pour un TImage, mais ça peut se faire avec un TBitmap, un TJPEGImage, etc...

    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
     
    uses 
      Printers; 
     
    procedure TForm1.Button1Click(Sender: TObject); 
    var 
      ScaleX, ScaleY: Integer; 
      RR: TRect; 
    begin 
      with Printer do 
      begin 
        BeginDoc; 
        try 
          ScaleX := GetDeviceCaps(Handle, logPixelsX) div PixelsPerInch; 
          ScaleY := GetDeviceCaps(Handle, logPixelsY) div PixelsPerInch; 
          RR := Rect(0, 0, Image1.picture.Width * scaleX, Image1.Picture.Height * ScaleY); 
          Canvas.StretchDraw(RR, Image1.Picture.Graphic); 
        finally 
          EndDoc;   //Methode EndDoc beendet den aktuellen Druckauftrag und schließt die 
        end; 
      end; 
    end;
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 421
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 421
    Points : 1 325
    Points
    1 325
    Par défaut
    Bonjour à toutes et à tous,

    @ Abac_Angelique, je pensais que l'aperçu Windows, reprenait toutes les images contenues dans le dossier et un seul click sur "Print" imprimait tout le dossier !

    Il faut peut être les sélectionnées ?

    @+,

    Cincap

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 141
    Points : 40
    Points
    40
    Par défaut
    oui sous XP, l'aperçu permettait d'imprimer l'intégralité des images contenues dans un dossier donc c'était facile.

    Mais sous Seven c'est différent il imprime image par image.

    Merci Paul TOHT je vais essayer d'implémenter la procédure sachant que le type d'image peut varier en fonction de ce que l'utilisateur aura rattaché à la fiche (BMP, JPG, TIF...) et qu'il faut que les proportions des images soient conservées.

Discussions similaires

  1. Imprimer une image simplement
    Par cyril.ppn dans le forum C++Builder
    Réponses: 3
    Dernier message: 10/08/2007, 22h31
  2. Imprimer une image avec java
    Par adilou1981 dans le forum Langage
    Réponses: 5
    Dernier message: 04/08/2006, 15h23
  3. imprimer une image dans un fichier
    Par SegmentationFault dans le forum Delphi
    Réponses: 7
    Dernier message: 02/08/2006, 16h04
  4. [FLASH] Imprimer une image chargée dynamiquement
    Par penchu dans le forum Flash
    Réponses: 2
    Dernier message: 04/01/2006, 16h59

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