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 de bitmap


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 12
    Par défaut rotation de bitmap
    Bonjour,
    Je suis nouveau sur le forum et j'ai déjà un problème à soumettre.
    -J'ai une interface graphique à faire style conteur kilomètrique à aiguille à faire et pour cela j'utilise une fonction pour faire les rotations d'image de type bitmap. Voici la fonction:
    Const
    MaxPixelCount = 32768;

    Type
    TRGBTripleArray = ARRAY[0..MaxPixelCount-1] of TRGBTriple;
    pRGBTripleArray = ^TRGBTripleArray;

    function RotateBitmapMethod1 (CONST BitmapOriginal: TBitmap; CONST iRotationAxis, jRotationAxis: INTEGER; CONST AngleOfRotation: DOUBLE):TBitmap;
    var
    THETA:DOUBLE;
    cosTheta, sinTheta : extended;
    i,j,iOriginal,jOriginal,iPrime,jPrime: integer;
    RowOriginal, RowRotated: pRGBTRipleARRAY;
    begin
    Result:=Tbitmap.create;
    Result.Width:= BitmapOriginal.Width;
    Result.Height:=BitmapOriginal.Height;
    Result.PixelFormat:=pf24bit;
    Theta := pi/180*ANGLEoFrOTATION;
    sincos(theta, sintheta, costheta);
    for j := Result.Height-1 downto 0 do
    begin
    RowRotated:=Result.ScanLine[j];
    jPrime:= 2*(j-jRotationAxis)-1;
    for i := result.Width-1 downto 0 do
    begin
    iPrime := 2*(i-iRotationAxis)-1;
    iOriginal := (Round(iprime*Costheta-jprime*sintheta)-1)div 2 + iRotationAxis;
    jOriginal := (Round(iprime*Sintheta+jprime*costheta)-1)div 2 + jRotationAxis;
    if (ioriginal>=0) AND (ioriginal <= Bitmaporiginal.width-1) AND (joriginal>=0) AND (joriginal<=Bitmaporiginal.height-1) then
    begin
    RowOriginal:= BitmapOriginal.ScanLine[joriginal];
    RowRotated[i]:=RowOriginal[ioriginal];
    end;
    end;
    end;
    end;
    Le problème est du que le rafraîchissement est trop lent et du coup l'image clignote...:( Je cherche une solution pour enlever ce clignotement mais je n'y arrive pas. C'est pour koi je demande votre aide. voilà merci d'avance pour vos réponse.
    Fichiers attachés Fichiers attachés

  2. #2
    Membre éprouvé Avatar de Guile
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Avril 2002
    Messages : 130
    Par défaut
    Je te conseille d'aller voir ce sujet. Il est très interessant et à mon avis, il devrait faire ton bonheur :

    http://www.developpez.net/forums/sho...d.php?t=213575


  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 12
    Par défaut
    Merci beaucoup Guili grâce à ce lien mon problème est résolut.
    Trop bien et encore merci

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

Discussions similaires

  1. Rotation de bitmap : problème de trigo avec PlgBlt
    Par Laskar dans le forum Langage
    Réponses: 5
    Dernier message: 26/11/2014, 14h29
  2. Dessiner avec rotation un bitmap
    Par Andry dans le forum Delphi
    Réponses: 6
    Dernier message: 04/05/2007, 15h15
  3. Rotation de Bitmap -> ScanLine
    Par jujuesteban dans le forum Langage
    Réponses: 7
    Dernier message: 03/07/2003, 15h11
  4. Lecture d'une image bitmap
    Par Geronimo dans le forum x86 32-bits / 64-bits
    Réponses: 18
    Dernier message: 28/06/2002, 12h01
  5. Comment faire pour créer un bitmap
    Par GliGli dans le forum C++Builder
    Réponses: 2
    Dernier message: 24/04/2002, 15h41

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