Salut,
Je veux créer cette animation avec Delphi:
Les flèches qui bougent correspondent au courant électriques circulant entre les nœuds.
Avez vous une idée pour faire cela?
Merci d'avance !
Salut,
Je veux créer cette animation avec Delphi:
Les flèches qui bougent correspondent au courant électriques circulant entre les nœuds.
Avez vous une idée pour faire cela?
Merci d'avance !
qu'est ce qui te pose problème exactement ?
il te faut
- une procédure pour dessiner une ligne avec des flèches à partir d'une position "p"
- un bitmap offline pour dessiner ton image
- afficher ce bitmap sur la fiche (ou un PaintBox) dans le OnPaint
- un timer pour redessiner le tout en modifiant la position "p" des flèches et invalider la fiche (ou la PaintBox)
On peut penser que le TAnimation de FMX permet de le faire aussi !
Tu peux je crois créer un petit scénario avec un TFloatAnimation et TPathAnimation comme dans la démo AnimationDemoHD
Le déplacement et rotation d'image est un basique de FMX, c'est la 1ère chose que Thierry Laborde a montré en 2011
Tu aurais un début de code à nous proposer que l'on puisse t'aider à le corriger
Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !![]()
Attention Troll Méchant !
"Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
L'ignorance n'excuse pas la médiocrité !
L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
Il faut avoir le courage de se tromper et d'apprendre de ses erreurs
Le sujet date un peu, mais ça peut en intéresser quelques-uns de connaître la méthode pour faire ça simplement avec l'API LineDDA :
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 type TForm1 = class(TForm) Timer1: TTimer; procedure Timer1Timer(Sender: TObject); end; procedure AnimLines(X, Y: Integer; lpData: lParam); stdcall; //Une fonction callback. var Form1 : TForm1; Offset : Integer; const AL_HORIZONTAL = 1; AL_VERTICAL = 2; implementation {$R *.dfm} procedure AnimLines(X,Y: Integer; lpData: LParam); var Coord : Integer; begin if lpData=AL_HORIZONTAL then Coord := X else Coord := Y; if (Coord mod 5)=Offset then SetPixelV( Form1.Canvas.Handle, X, Y, clBlack ) else SetPixelV( Form1.Canvas.Handle, X, Y, clWhite ); end; procedure TForm1.Timer1Timer(Sender: TObject); begin if Offset>3 then Offset := 1 else Inc(Offset); LineDDA( 20,20,120,20, @AnimLines, AL_HORIZONTAL ); LineDDA( 20,20,20,120, @AnimLines, AL_VERTICAL ); end; END.
qui dit animation, dit complication
je vous propose une démo compilée sous Delphi 6...
Fleches.zip
et une idée me vient à l'esprit :
les sources de la démo sont à vendre, soit directement auprès de ma société Execute, soit à la communauté
si je totalise 50€ de don pour financer le projet FlashPascal (faire un don), je vous livre les sources ici même![]()
Vous n'avez pas remarqué que JeaDeb n'est pas venu vous répondre depuis un mois, il n'est même pas revenu sur le forum depuis son inscription
On peut espérer qu'il a fait son propre code depuis !
Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !![]()
Attention Troll Méchant !
"Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
L'ignorance n'excuse pas la médiocrité !
L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
Il faut avoir le courage de se tromper et d'apprendre de ses erreurs
Partager