Deplacement d'une image

Résolu
jule452 Messages postés 48 Date d'inscription vendredi 4 novembre 2005 Statut Membre Dernière intervention 15 décembre 2008 - 9 déc. 2008 à 22:35
jule452 Messages postés 48 Date d'inscription vendredi 4 novembre 2005 Statut Membre Dernière intervention 15 décembre 2008 - 15 déc. 2008 à 12:42
Bonjour, apres avoir fait pas mal de recherche sur notre amis google ainsi que sur ce forum , je me decide donc a poser cette question et a m'en remettre a votre savoir.
Voila mon probleme, je voudrais deplacer une image en lui faisant faire une rotation circulaire.
Probleme peut etre facile pour vous mais je ne m'en sort pas n'ayant pas un grand niveau en programmation je sollicite donc votre aide.

Voila merci de votre attention si vous avez une idee de comment je pourrai m'y prendre je vous en remerci

                                                                                                                                   a+

13 réponses

cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
12 déc. 2008 à 14:30
C'est pas compliqué. Niveau première/terminal je dirais. Cherche des cours de trigonométrie.

Tu peux par exemple te baser sur sinus et cosinus.

Une form, avec une TImage, un TTimer, un bouton.
Ne pas oublier d'ajouter teta comme membre privé de la Form :

type
  TForm1 = class(TForm)
    ...
  private
    teta: Single;
    { Déclarations privées }
  public
    { Déclarations publiques }
  end;

Tu peux changer l'initialisation de teta pour modifier l'angle de départ.
En Delphi le 0, 0 est en haut à gauche.
Tu peux faire varier deltaTeta et timerInterval pour modifier la vitesse de déplacement.
Radius, c'est le rayon.

Et surtout, nomme tes composants !

<hr size="2" width="100%" />unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls, Buttons;

type
  TForm1 = class(TForm)
    Image1: TImage;
    BitBtn1: TBitBtn;
    Timer1: TTimer;
    procedure BitBtn1Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    teta: Single;
    { Déclarations privées }
  public
    { Déclarations publiques }
  end;

var
  Form1: TForm1;

const
  centerLeft: Integer = 400;
  centerTop: Integer = 200;
  radius: Integer = 50;
  deltaTeta: Single = 0.05;
  timerInterval: Integer = 10;

implementation

{$R *.dfm}

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
  DoubleBuffered:= True;
  teta:= 0;
  Timer1.Interval:= timerInterval;
  Timer1.Enabled:= True;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  teta:= teta + deltaTeta;
  image1.Left:= Round(centerLeft + radius * cos(teta));
  image1.Top:= Round(centerTop + radius * sin(teta));
end;

end.
3
jule452 Messages postés 48 Date d'inscription vendredi 4 novembre 2005 Statut Membre Dernière intervention 15 décembre 2008
9 déc. 2008 à 22:38
Desoler trop presser d'envoyer mon message je me suis tromper, je voulai dire translation circulaire a l'aide d'un timer

   excuser moi pour cette erreur, et je vous remerci d'avance pour vos reponse

                                                                                                                                           a+
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 14
10 déc. 2008 à 13:42
bonjour,
tu trouveras sur le site de nombreux exemples de rotation d'image (centre et alpha)
qu'il suffit de paramétrer pour le centre et donc avoir une translation circulaire.


On verra après pour le timer..

cantador
0
jule452 Messages postés 48 Date d'inscription vendredi 4 novembre 2005 Statut Membre Dernière intervention 15 décembre 2008
10 déc. 2008 à 14:20
Bonjour cantador merci de t'inresser a mon probleme, je me suis peu etre mal exprimer je en faite deplacer le composant timage en faisant une translation circulaire, je ne veut pas modifier l'image mais bien la position du Timage, parce en effet pour la modification d'image le site a pass mal d'exemple

merci de prendre du temps pour moi a+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 14
10 déc. 2008 à 16:05
Je n'envisageai pas non plus une modif de l'image..mais bien de son conteneur..
mais cela revient au même..
si le conteneur se déplace selon un arc, l'image contenue dedans fera le même mouvement.
ou alors, c'est moi qui ai mal interprété et dans ton cas
tu aurais en supposant un conteneur plus grand que l'image et tu ne déplacerai que celui-ci, l'image elle restant fixe.

quelle est la bonne fprmule ?

cantador
0
jule452 Messages postés 48 Date d'inscription vendredi 4 novembre 2005 Statut Membre Dernière intervention 15 décembre 2008
10 déc. 2008 à 18:25
Bonjour cantador, c'est la premiere formule qui est la bonne c'est bien le composant qui doit bouger  donc l'image contenu suivre naturelement le mouvement je vais donc chercher sur le forum ce que tu me conceil mais sache que j'ai deja fait pas mal de recherche surement avec des mauvais mots cles
Merci d'accorder un peu de temps pour des debutant comme moi

                                                                                                                                                   a+
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 14
11 déc. 2008 à 17:31
salut rt15..
je te rassure, c'était juste pour la partie rotation..
et il faut que le code reste abordable...

cantador
0
jule452 Messages postés 48 Date d'inscription vendredi 4 novembre 2005 Statut Membre Dernière intervention 15 décembre 2008
11 déc. 2008 à 17:33
Merci pour votre aide je vais etudier sa de près et regarder si c'est
bien le composant qui tourne et pas l'image merci a vous deux pour
votre aide je reviendrai plus tard pour vous donnez l'avancement de cette fonction qui me pose pas mal de probleme

Merci encore au expert d'accorder du temps au debutant qui galere pour des chose simple
                                                                                                                                        a+
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
11 déc. 2008 à 17:36
C'est l'image qui tourne.

On ne peut pas faire tourner le composant.
0
jule452 Messages postés 48 Date d'inscription vendredi 4 novembre 2005 Statut Membre Dernière intervention 15 décembre 2008
11 déc. 2008 à 17:38
Bonjour je sais je ne veut pas faire tourner le composant en faite je veut lui faire suivre un trajectoire circulaire, en faite je veut que le composant se deplace en translation cirulaire (je crois que c'est comme sa que sa s'appelle)

merci de votre temps pour m'aider                                                                                       a+
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
11 déc. 2008 à 18:10
Aaaaaaaaah... Une translation circulaire ?

Donc pas de rotation. Et tu peux effectivement faire faire une translation à un composant.

Bin tu peux déjà essayer de taper sur les coordonnées de ton image (image1.Left, image1.Top...).

Ca risque de pas être fluide par contre. Donc tu risque de devoir trouver une autre solution, style image1.Canvas.CopyRect();, et éventuellement regardé du côté de TForm1.DoubleBuffered:= True;

Après, le reste, c'est des maths.
0
jule452 Messages postés 48 Date d'inscription vendredi 4 novembre 2005 Statut Membre Dernière intervention 15 décembre 2008
11 déc. 2008 à 20:54
Bonjour,merci de votre interet effectivement le probleme vient de la le reste c'est des maths et moi et les maths et je ne trouver pas la formule pour effectuer ce deplacement
j'ai faits pas mal de recherche ou on me donne des formules comme le calcule du perimettre etc mais je ne voit pas comment la mettre en oeuvre au niveau du code et c'est la dessus que je vous demande un coup de main

merci de votre attention pour mon probleme

                                                                                                                                                   a+
0
jule452 Messages postés 48 Date d'inscription vendredi 4 novembre 2005 Statut Membre Dernière intervention 15 décembre 2008
15 déc. 2008 à 12:42
Merci sa marche tres bien je t'assure je ne pense pas que j'aurai trouver tous seul encore merci

bonne journee                                                                                             a+
0
Rejoignez-nous