Deplacement d'une image [Résolu]

jule452 49 Messages postés vendredi 4 novembre 2005Date d'inscription 15 décembre 2008 Dernière intervention - 9 déc. 2008 à 22:35 - Dernière réponse : jule452 49 Messages postés vendredi 4 novembre 2005Date d'inscription 15 décembre 2008 Dernière intervention
- 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+
Afficher la suite 

Votre réponse

16 réponses

cs_rt15 3982 Messages postés mardi 8 mars 2005Date d'inscription 7 novembre 2014 Dernière intervention - 12 déc. 2008 à 14:30
+3
Utile
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.
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_rt15
jule452 49 Messages postés vendredi 4 novembre 2005Date d'inscription 15 décembre 2008 Dernière intervention - 9 déc. 2008 à 22:38
0
Utile
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+
Commenter la réponse de jule452
cs_cantador 4996 Messages postés dimanche 26 février 2006Date d'inscription 27 mars 2018 Dernière intervention - 10 déc. 2008 à 13:42
0
Utile
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
Commenter la réponse de cs_cantador
jule452 49 Messages postés vendredi 4 novembre 2005Date d'inscription 15 décembre 2008 Dernière intervention - 10 déc. 2008 à 14:20
0
Utile
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+
Commenter la réponse de jule452
cs_cantador 4996 Messages postés dimanche 26 février 2006Date d'inscription 27 mars 2018 Dernière intervention - 10 déc. 2008 à 16:05
0
Utile
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
Commenter la réponse de cs_cantador
jule452 49 Messages postés vendredi 4 novembre 2005Date d'inscription 15 décembre 2008 Dernière intervention - 10 déc. 2008 à 18:25
0
Utile
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+
Commenter la réponse de jule452
jule452 49 Messages postés vendredi 4 novembre 2005Date d'inscription 15 décembre 2008 Dernière intervention - 11 déc. 2008 à 11:32
0
Utile
Bonjour de viens d'effectuer pas mal de recherche sur se site et sur google et je n'arrive toujours pas a trouver mon bonheur j'ai bien trouver une question sur le forum qui et extactement mon probleme mais je n'en comprend pas la solution
http://www.delphifr.com/forum/sujet-FAIRE-TOURNER-COMPOSANT-IMAGE-SUR-360_857058.aspx
il dit d'utiliser l'equation du cercle pour resoudre le probleme mais je suis come celui qui pose la question je ne vois vraiment pas le code pour arriver a cela est que quelqu'un pourrai m'aiguiller un peu

je vous remerci                                                                                                                 a+
Commenter la réponse de jule452
cs_cantador 4996 Messages postés dimanche 26 février 2006Date d'inscription 27 mars 2018 Dernière intervention - 11 déc. 2008 à 12:10
0
Utile
jette un oeil là dessus et cherche aussi les sujets sur scanline :

http://www.delphifr.com/codes/MOTEUR-2D-JEU-PONG_33375.aspx

cantador
Commenter la réponse de cs_cantador
cs_rt15 3982 Messages postés mardi 8 mars 2005Date d'inscription 7 novembre 2014 Dernière intervention - 11 déc. 2008 à 17:27
0
Utile
Salut,

Cantador -> T'es pas fou de lui filer un lien vers un de mes sources ? Manquerait plus qu'il la lise. Nan sérieux faudrait que je la mette à jour, mais j'ai peur d'avoir une crise cardiaque en me relisant.

jule452 -> Celle là est probablement plus jolie.
Commenter la réponse de cs_rt15
cs_cantador 4996 Messages postés dimanche 26 février 2006Date d'inscription 27 mars 2018 Dernière intervention - 11 déc. 2008 à 17:31
0
Utile
salut rt15..
je te rassure, c'était juste pour la partie rotation..
et il faut que le code reste abordable...

cantador
Commenter la réponse de cs_cantador
jule452 49 Messages postés vendredi 4 novembre 2005Date d'inscription 15 décembre 2008 Dernière intervention - 11 déc. 2008 à 17:33
0
Utile
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+
Commenter la réponse de jule452
cs_rt15 3982 Messages postés mardi 8 mars 2005Date d'inscription 7 novembre 2014 Dernière intervention - 11 déc. 2008 à 17:36
0
Utile
C'est l'image qui tourne.

On ne peut pas faire tourner le composant.
Commenter la réponse de cs_rt15
jule452 49 Messages postés vendredi 4 novembre 2005Date d'inscription 15 décembre 2008 Dernière intervention - 11 déc. 2008 à 17:38
0
Utile
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+
Commenter la réponse de jule452
cs_rt15 3982 Messages postés mardi 8 mars 2005Date d'inscription 7 novembre 2014 Dernière intervention - 11 déc. 2008 à 18:10
0
Utile
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.
Commenter la réponse de cs_rt15
jule452 49 Messages postés vendredi 4 novembre 2005Date d'inscription 15 décembre 2008 Dernière intervention - 11 déc. 2008 à 20:54
0
Utile
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+
Commenter la réponse de jule452
jule452 49 Messages postés vendredi 4 novembre 2005Date d'inscription 15 décembre 2008 Dernière intervention - 15 déc. 2008 à 12:42
0
Utile
Merci sa marche tres bien je t'assure je ne pense pas que j'aurai trouver tous seul encore merci

bonne journee                                                                                             a+
Commenter la réponse de jule452

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.