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 :

Rotation image 90° sens horaire


Sujet :

Delphi

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    439
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 439
    Points : 161
    Points
    161
    Par défaut Rotation image 90° sens horaire
    Bonjour,

    Mon application utilise un TChart que je souhaite voir figurer dans un QRCompositeReport.

    Le Tchart en question est affiché dans l'application en mode paysage.
    Mon Composite, lui, est en portrait et par conséquent, je ne puis l'inclure dans ce report.

    J'ai donc tenté de sauvegarder le TChart sous forme d'image *.bmp, puis de faire pivoter celle ci de 90° sens horaire grâce à un Timage32, de la re-sauvegarder dans le bon sens et de la charger enfin dans in QRTImage.

    Voici la façon dont je m'y suis pris.

    Dans le form contenant le TChart:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Chart1.SaveToBitmapFile((ExtractFilePath(application.exename) + '\' + 'Images\'+'Chart1.bmp'));
    A la construction du Composite report:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Form14.Image321.Bitmap.LoadFromFile((ExtractFilePath(application.exename)
                                            + '\' + 'Images\'+'Chart1.bmp'));
    Form14.Image322.Bitmap.Rotate90(Form14.Image321.Bitmap);
    Form14.Image322.Bitmap.SaveToFile((ExtractFilePath(application.exename)
                                            + '\' + 'Images\'+'Chart1.bmp'),False);
      Form14.QRImage1.Picture.Bitmap.LoadFromFile((ExtractFilePath(application.exename)
                                            + '\' + 'Images\'+'Chart1.bmp'));
    Le bmp sauvegardé après rotation ne semble pas être reconnu par windows ni par le TQRimage.

    Pourriez vous me conseiller pour résoudre ce problème.

    Merci par avance
    Pierre

  2. #2
    Membre chevronné

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 288
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 1 288
    Points : 1 936
    Points
    1 936
    Par défaut
    Le paramètre false de SaveToFile n'apparaît pas dans la documenation de Graphics32.

    Sinon j'ai ce code là pour faire une rotation (ce n'est pas l'idéal, mais cela fonctionne suffisamment pour mon usage)
    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
     
    class procedure TMaclasse.TurnHour_Bitmap(pBitmap: Graphics.TBitmap);
    type
      TRGBArray = ARRAY[0..10000] of TRGBTriple;
      pTRGBArray = ^TRGBArray;
      TArrayLigneCible = Array[0..10000] of pTRGBArray;
    var
      BmpSource, BmpFinal: Graphics.TBitmap;
      x, y: integer;
      LineSource, LineFinal: pTRGBArray;
    begin
      BmpSource := Graphics.TBitmap.Create;
      BmpFinal := Graphics.TBitmap.Create;
      try
        BmpSource.Assign(pBitmap);
        BmpSource.PixelFormat := pf24bit;
        BmpFinal.PixelFormat := pf24bit;
     
        // Rotation à 90° sens horaire.
        BmpFinal.Height := BmpSource.Width;
        BmpFinal.Width := BmpSource.Height;
     
        for y := 0 to BmpSource.Height-1 do
        begin
          LineSource := BmpSource.ScanLine[y];
          for x := 0 to BmpSource.Width-1 do
          begin
            // 90°
            LineFinal := BmpFinal.ScanLine[x];
            LineFinal[BmpSource.Height-1-y] := LineSource[x];
            // -90°
            //LineFinal := BmpFinal.ScanLine[BmpSource.Width-1-x];
            //LineFinal[y]:=LineSource[x];
          end;
        end;
      finally
        BmpSource.Free;
        pBitmap.Assign(BmpFinal);
        BmpFinal.Free;
      end;
    end;
    Delphi 7/XE2/XE3
    C#
    Oracle 9i à 12c
    SQL Server 2008 à 2014

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    439
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 439
    Points : 161
    Points
    161
    Par défaut
    Merci Linkin de cette réponse rapide.

    En effet, je travaillait avec une version ancienne de GR32.
    J'ai installé la nouvelle et ce paramètre a disparu.

    J'ai toujours un message d'erreur:

    Image de Bitmap non valide
    à l'instruction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Form14.Image322.Bitmap.SaveToFile((ExtractFilePath(application.exename) + '\' + 'Images\'+'Chart1.bmp'));
    Je garde cela sous le coude au cas où l'un d'entre vous aurait une idée sinon, je vais essayer ton code avec mes remerciements

    Cordialement
    Pierre

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    439
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 439
    Points : 161
    Points
    161
    Par défaut
    Bonjour,

    Merci encore Linkin, mais j'ai trouvé un code que je comprends mieux ici:

    http://www.developpez.net/forums/d48...ap32-tjvimage/

    Cordialement
    Pierre

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

Discussions similaires

  1. Rotation image from powerpoint
    Par cuterate dans le forum Word
    Réponses: 2
    Dernier message: 27/08/2008, 14h27
  2. GdiPlus : Rotation image / Décomposition des Gifs animés
    Par Arkham46 dans le forum Contribuez
    Réponses: 5
    Dernier message: 30/03/2008, 21h07
  3. Réponses: 11
    Dernier message: 05/02/2008, 13h10
  4. Réponses: 3
    Dernier message: 29/01/2008, 12h04
  5. Algorithme pour rotation image en C
    Par guigui01 dans le forum Traitement d'images
    Réponses: 6
    Dernier message: 22/04/2006, 14h41

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