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

Langage Delphi Discussion :

Adapter la taille d'une image de fond de page


Sujet :

Langage Delphi

  1. #1
    Membre confirmé

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 184
    Points : 619
    Points
    619
    Par défaut Adapter la taille d'une image de fond de page
    dans une application les éditions sont générées via la Canvas de Delphi.
    Une de ces éditions est une page de lettre et je voudrais utiliser une image de fond de page.
    J'ai un fichier JPEG dimensionné à 21*29 cm avec le logo, le bas de page etc...
    si je le place sur le canvas avec le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Printer.Canvas.StretchDraw(Rect(0, 0, PrinterPageWidth, Printer.PageHeight), LO_Image);
    la taille est déformée
    si je laisse ses dimensions identiques
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Printer.Canvas.StretchDraw(Rect(0, 0, LO_Image.Width, LO_Image.Height), LO_Image);
    l'image s'affiche bien mais sur une partie seulement de la page.
    Je suppose qu'il s'agit d'un problème dans la taille du canvas mais elle et fonction de l'imprimante et je ne vois pas comment la changer.

  2. #2
    Membre confirmé

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 184
    Points : 619
    Points
    619
    Par défaut
    Je reformule ma question
    Comment faut il paramétrer la méthode d'écriture d'une image sur le canvas pour qu'une image paramétrée en 21 * 29 cm remplisse la totalité du canvas de la page.

  3. #3
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 664
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 664
    Points : 6 961
    Points
    6 961
    Par défaut
    Ca m'intéresse également.
    Je n'ai jamais réussi a faire quelque chose de propre.
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

  4. #4
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 447
    Points : 24 849
    Points
    24 849
    Par défaut
    Je l'ai fait, j'ai pas le code sous la main, mais c'est assez simple !
    Il faut trouver le facteur d'agrandissement, simple ratio taille d'origine et taille finale, prendre le plus petit ratio sinon ça dépassera de la page et l'appliquer sur l'image d'origine, ainsi cela conserve les dimensions avec un effet de zoom
    C'est juste une règle de trois !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ZoomX:= Printer.PageWidth / LO_Image.Width;
    ZoomY:= Printer.PageHeight / LO_Image.Height;
    Zoom:= Min(ZoomX, ZoomY);
     
    Printer.Canvas.StretchDraw(Rect(0, 0, LO_Image.Width * Zoom,  LO_Image.Height * Zoom), LO_Image);
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  5. #5
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 683
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 683
    Points : 13 092
    Points
    13 092
    Par défaut
    Si l'image est déformée, c'est que les résolutions X et Y de l'imprimante ne sont pas identiques.

    Il faut déterminer le nombre de pixels par centimètre, les marges physiques, le facteur X/Y, etc. et enfin faire le StretchDraw sur un rectangle calculé.

    Tout ceci ce fait avec l'API GetDeviceCaps. PHYSICALOFFSETX, PHYSICALWIDTH, HORZSIZE, LOGPIXELSX, etc.

  6. #6
    Membre confirmé

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 184
    Points : 619
    Points
    619
    Par défaut
    Merci pour vos réponses

    Si l'image est déformée, c'est que les résolutions X et Y de l'imprimante ne sont pas identiques.
    Effectivement et j'avais vu deux solutions :
    - modifier les proportions du canvas de l'imprimante mais je ne sais pas le faire car les propriétés sont en lecture seule
    - adresser une image directement à la bonne taille et c'est pour cela que j'avais taillé mon bitmap à 21 * 29

    Je vais réfléchir à un moyen d'adapter une des deux valeurs X ou Y et d'appliquer le même coeffecient à l'autre
    Si je trouve je posterai une réponse

  7. #7
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 447
    Points : 24 849
    Points
    24 849
    Par défaut
    J'ai corrigé mon code, erreur de copier-coller ! J'avais laissé Width au lieu de Heigth, tu n'es pas revenu ! tu n'as pas trouvé ?
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

Discussions similaires

  1. adapter taille d'une image en fond d'écran
    Par Stéph utilisateur d'acces dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 30/11/2009, 19h47
  2. [E-03] Adapter Userform à taille de l'image de fond
    Par allergique dans le forum Macros et VBA Excel
    Réponses: 18
    Dernier message: 26/10/2008, 20h22
  3. Adapter la taille d'une image en background d'un tableau
    Par Poutchou dans le forum Balisage (X)HTML et validation W3C
    Réponses: 10
    Dernier message: 27/04/2006, 16h53
  4. [Débutant] Comment adapter la taille d'une image ?
    Par taupeniveau dans le forum Composants VCL
    Réponses: 3
    Dernier message: 14/02/2006, 18h00

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