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

Rave Discussion :

Comment centrer une image avec un TRaveBitmat ?


Sujet :

Rave

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 109
    Par défaut Comment centrer une image avec un TRaveBitmat ?
    Bonjour,
    Comment connaître la dimension exacte d'une image déposée sur un TRaveBitmap ( en unités inch ou mm) pour pouvoir ensuite la centrer ?.
    Dans QuickReport la solutiol est simple :
    QRIMAGE1.AutoSize:=True; // le composant est automatiquement redimensionné à la taille de l'image
    J'aimerais bien utiliser ma procedure Centre_Image pour effectuer ce travail comme avec QuickReport .
    Je travaille en Delphi 7 avec RaveReport 5.0
    D'avance merci.

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
     {* ************************************************** *}
     
    PROCEDURE CENTRE_IMAGE (LARGEUR_IMAGE ,HAUTEUR_IMAGE: Real;LARGEUR_FENETRE,HAUTEUR_FENETRE : REAL;
      Var IMAGE_TOP,IMAGE_LEFT,IMAGE_WIDTH,IMAGE_HEIGHT : Real ;Marge_Left : Integer = 0;Marge_Top : Integer = 0);
        // IMAGE doit être en Stretch
      VAR R1,R2,LARGEUR,HAUTEUR : REAL;
      BEGIN
     
        IMAGE_TOP:=0;
        R1:=LARGEUR_IMAGE / LARGEUR_FENETRE;
        R2:=HAUTEUR_IMAGE/HAUTEUR_FENETRE;
        IF (HAUTEUR_FENETRE>=HAUTEUR_IMAGE) AND (LARGEUR_FENETRE>=LARGEUR_IMAGE)THEN
          BEGIN  // Image entière
            LARGEUR:=LARGEUR_IMAGE;
            HAUTEUR:=HAUTEUR_IMAGE;
            IMAGE_TOP:=TRUNC((HAUTEUR_FENETRE-HAUTEUR)/2)+ Marge_Top;
            IMAGE_LEFT:=TRUNC((LARGEUR_FENETRE-LARGEUR)/2)+ Marge_Left;
            IMAGE_WIDTH:=TRUNC(LARGEUR);
            IMAGE_HEIGHT:=TRUNC(HAUTEUR);
          END
        ELSE
        IF R1>=R2 THEN
          BEGIN // Image trop large
            LARGEUR:=LARGEUR_IMAGE/R1;
            HAUTEUR:=HAUTEUR_IMAGE/R1;
            IMAGE_TOP:=TRUNC((HAUTEUR_FENETRE-HAUTEUR)/2)+ Marge_Top;
            IMAGE_LEFT:=TRUNC((LARGEUR_FENETRE-LARGEUR)/2)+ Marge_Left;
            IMAGE_WIDTH:=TRUNC(LARGEUR);
            IMAGE_HEIGHT:=TRUNC(HAUTEUR);
          END
        ELSE
          BEGIN  // Image trop haute
            LARGEUR:=LARGEUR_IMAGE/R2;
            HAUTEUR:=HAUTEUR_IMAGE/R2;
            IMAGE_TOP:=TRUNC((HAUTEUR_FENETRE-HAUTEUR)/2)+ Marge_Top;
            IMAGE_LEFT:=TRUNC((LARGEUR_FENETRE-LARGEUR)/2)+ Marge_left;
            IMAGE_WIDTH:=TRUNC(LARGEUR);
            IMAGE_HEIGHT:=TRUNC(HAUTEUR);
          END;
      END;
     
    // **************************************************
    .........................................................................
    Exemple de code qui ne fonctonne pas :
     
                //  ----------------- IMAGE 1 ------------------------
                RaveBitmap1 := MaPage.CreateChild(TRaveBitMap) as TRaveBitMap;
                IF  RaveBitmap1 = NIL THEN
                  BEGIN
                    SHOWMESSAGE('Erreur : création Image1.');
                    EXIT;
                  END;
                RaveBitmap1.Parent:=MaPage;
                RaveBitmap1.Name:='Image1';
                RaveBitmap1.Image:=IMAGE1.Picture.Graphic;
                Largeur_IMAGE_Zone:=RaveBitmap1.Width; 
                Hauteur_IMAGE_Zone:= RaveBitmap1.Height;
     
                CENTRE_IMAGE(Largeur_IMAGE_Zone,Hauteur_IMAGE_Zone, // Pixels
                Conv_CM_INCH(Cote_Pochette), // Largeur de la Zone sur la page Rave
                Conv_CM_INCH(Cote_Pochette), // Hauteur de la Zone sur la page Rave
                IMAGE_TOP,IMAGE_LEFT,IMAGE_WIDTH,IMAGE_HEIGHT);  // Récupérer les valeurs
     
                RaveBitmap1.Top := IMAGE_TOP + Conv_CM_INCH(MH_I1);
                RaveBitmap1.Left := IMAGE_LEFT + Conv_CM_INCH(MG);
                RaveBitmap1.width := IMAGE_WIDTH;
                RaveBitmap1.Height := IMAGE_HEIGHT;
     
    _____________________________________________________________
    Par contre
    J'arrive à bidouiller quelque chose tant que la taille de l'image est >= à ma variable Cote_Pochette
     
        // **************************************************
    Function Conv_CM_INCH( Nombre : Real ): Real;
      Begin
        Result:=Nombre / 2.54;
      End;
    // **********************************************************
        // En cm
        Inch:=2.54;
        MG := 1.2;  // Marge de gauche
        MH_I1 := 1.2; // Marge de haut Image1
        Cote_Pochette :=12; // Coté de la pochette
    ...........................................................
            If Image1.Picture.Bitmap.Height >= Image1.Picture.Bitmap.Width Then
            Coef1:=Image1.Picture.Bitmap.Width / Image1.Picture.Bitmap.Height
            Else
            If Image1.Picture.Bitmap.Height < Image1.Picture.Bitmap.Width Then
            Coef1:= Image1.Picture.Bitmap.Height /Image1.Picture.Bitmap.Width;
    .........................................................
                If Image1.Picture.Bitmap.Height >= Image1.Picture.Bitmap.Width Then
                  Begin
                    // Pour centrer l'image en largeur
                    RaveBitmap1.Top := ((Conv_CM_INCH(Cote_Pochette)) - RaveBitmap1.Height) /2 + (Conv_CM_INCH(MH_I1));
                    Largeur_Image1:= Conv_CM_INCH(Cote_Pochette * Coef1);
                    Marge1:= ((Conv_CM_INCH(Cote_Pochette) )-Largeur_Image1) / 2; // Pour centrer en largeur
                    RaveBitmap1.Left :=RaveBitmap1.Left + Marge1; // Pour centrer l'image en largeur
                  End
                Else
                If Image1.Picture.Bitmap.Height < Image1.Picture.Bitmap.Width Then
                  Begin
                    // Pour centrer l'image en hauteur
                    Hauteur_Image1:= Conv_CM_INCH(Cote_Pochette * Coef1);
                    Marge1:= ((Conv_CM_INCH(Cote_Pochette) )- Hauteur_Image1) / 2; // Pour centrer en hauteur
                    RaveBitmap1.Top :=RaveBitmap1.Top + Marge1; // pour centrer l'image
                  End;
                // ------------

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 109
    Par défaut Centrer un RAVEBITMAP
    J'ai trouvé:
    - Des erreurs dans la procedure CENTRE_IMAGE il faut enlever les Trunc(
    - et pour connaître la dimension de l'image il faut :
    Largeur_IMAGE_REELLE:= Image1.Picture.Bitmap.Width / RvSystem1.SystemPrinter.ScaleX ; // Inch
    Hauteur_IMAGE_REELLE:= Image1.Picture.Bitmap.Height / RvSystem1.SystemPrinter.ScaleY;// Inch

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. comment centrer une image avec allegro
    Par SANDRA009 dans le forum Allegro
    Réponses: 2
    Dernier message: 27/08/2010, 00h14
  2. Comment centrer une image insérée dans un JtextPane ?
    Par med_anis_dk dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 07/06/2007, 21h23
  3. Réponses: 4
    Dernier message: 26/09/2005, 14h27
  4. PL/SQL - Comment afficher une image avec HTP ?
    Par patmaba dans le forum PL/SQL
    Réponses: 2
    Dernier message: 08/07/2004, 09h28

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