{----------------------------------------------------------------}
{ Restaure, déplace et déssine un flocon }
{----------------------------------------------------------------}
Procedure TFloc.MoveIt;
Begin
FTriumvirat.Canvas.CopyRect(RIma, FTriumvirat.ImaFloc.Picture.Bitmap.Canvas, RIma);
PosX := PosX + ((Vent.X * RandomRange(3, 5 * Zoom)) / 30);
PosY := PosY + ((Vent.Y * RandomRange(3, 5 * Zoom)) / 30);
RIma.Left := Round(PosX);
RIma.Top := Round(PosY);
RIma.Right := RIma.Left + FIma.Width;
RIma.Bottom := RIma.Top + FIma.Height;
FTriumvirat.Canvas.StretchDraw(RIma, FIma);
If (PosY > FTriumvirat.ClientHeight) And (Vent.Y > 0) Then
Begin
PosX := RandomRange(0, FTriumvirat.ClientWidth);
PosY := -FIma.Height;
End
ELse
If (PosY < FIma.Height) And (Vent.Y < 0) Then
Begin
PosX := RandomRange(0, FTriumvirat.ClientWidth);
PosY := FTriumvirat.ClientHeight;
End;
If (PosX > FTriumvirat.ClientWidth) And (Vent.X > 0) Then
PosX := -FIma.Width
Else
If (PosX < FIma.Width) And (Vent.X < 0) Then
PosX := FTriumvirat.ClientWidth;
End;
procedure CleanPositionOf(var OldRect: TRect);
begin
{Effacement des anciennes positions}
BmpInvisible.Canvas.CopyRect(OldRect, bmpFond.canvas, OldRect);
end;
procedure FusionPositionOf(var UnionR, OldRect, NewRect: TRect);
begin
{Union des positions anciennes et nouvelles}
UnionRect(UnionR, OldRect, NewRect);
FTriumVirat.PaintBox1.Canvas.CopyRect(UnionR, BmpInvisible.Canvas, UnionR);
OldRect := NewRect;
end;
procedure NewPositionOf(var vx, vy, xx, yy: single; var x, y: integer; var RNew: TRect; Bmp: TBitmap);
begin
{ rebonds }
if (x < 0) or (x > Bmpfond.width - W) then
vx := -vx;
if (y < 0) or (y > Bmpfond.height - H) then
vy := -vy;
xx := xx + vx;
yy := yy + vy;
x := trunc(xx);
y := trunc(yy);
RNew := bounds(x, y, W, H);
BmpInvisible.Canvas.Draw(x, y, Bmp);
end;
procedure TFTriumvirat.FormCreate(Sender: TObject);
var
HH :HDC;
largeur:integer;
hauteur:integer;
{ si BMP est prét }
if BMPLoaded then
begin
NewW:=Edlargeur.value ;
NewH:=Edhauteur.value ;
end;
{ enfin on vas injecter BMP dans le bitmap de Image1 (autosize = true) }
with image1.picture.bitmap do
begin
{ on definit les nouvelles dimensions }
width := NewW;
height := NewH;
{ on travail en couleurs 24bpc }
pixelformat := pf24bit;
{ on sauvegarde l'ancien mode de redimension du canvas }
OldSBM := GetStretchBltMode(Canvas.Handle);
{ et on le definit en mode HALFTONE }
SetStretchBltMode(Canvas.Handle, HALFTONE);
LBDelphiProg.Hint := 'Ben celle-là vous me la copierez..';
LBFoxi.Hint := 'Même à mon niveau, j''aurai jamais fais un truc pareil..';
LBCirec.Hint := 'Dis-donc, faudrait p''tet mettre quelque chose dans le zip..';
end;
end;
procedure TFTriumvirat.FormDestroy(Sender: TObject);
begin
BmpFond.free;
BmpInvisible.free;
BmpImage1.Free;
BmpImage2.Free;
BmpImage3.Free;
end;
procedure TFTriumvirat.FormPaint(Sender: TObject);
begin
procedure TFTriumvirat.Button1Click(Sender: TObject);
begin
close;
end;
procedure TFTriumvirat.Timer1Timer(Sender: TObject);
var
n: integer;
begin
for n := 1 to trackbar1.position do { boucle de répétition d'affichage }
begin
CleanPositionOf(OldRect1);
CleanPositionOf(OldRect2);
CleanPositionOf(OldRect3);
case RandomRange(2, 5) of
2:
begin
Cpt := Point(LBDelphiProg.Width div 2, LBDelphiProg.Height div 2);
Cpt := LBDelphiProg.ClientToScreen(Cpt);
SetCursorPos(Cpt.X, Cpt.Y);
end;
3:
begin
Cpt := Point(LBFoxi.Width div 2, LBFoxi.Height div 2);
Cpt := LBFoxi.ClientToScreen(Cpt);
SetCursorPos(Cpt.X, Cpt.Y);
end;
4:
begin
Cpt := Point(LBCirec.Width div 2, LBCirec.Height div 2);
Cpt := LBCirec.ClientToScreen(Cpt);
SetCursorPos(Cpt.X, Cpt.Y);
end;
end;
sleep(1000);
CheckBox1.SetFocus;
end;
end;
procedure TFTriumvirat.FormActivate(Sender: TObject);
Var
i, j: Integer;
R, G, B: Byte;
Begin
Randomize;
{ Création des flocons }
For i := 1 To MaxFloc Do
AFloc[i] := TFloc.Create;
Application.ProcessMessages;
{ Sauvegarde de l'arrière-plan avant animation }
ImaFloc.Picture.Bitmap.Width := Width;
ImaFloc.Picture.Bitmap.Height := Height;
ImaFloc.Picture.Bitmap.Canvas.CopyRect(ClientRect, Canvas, ClientRect);
{ Mise en route de l'animation }
Timer1.Enabled := True ;
Timer2.Enabled := True ;
end;
procedure TFTriumvirat.Timer2Timer(Sender: TObject);
Var
i: Integer;
Begin
{ Mouvements des flocons }
For i := 1 To MaxFloc Do AFloc[i].MoveIt;
{ Sortie du programme }
If (GetActiveWindow <> Handle) Then Close;
end;
end.
cs_Forman
Messages postés600Date d'inscriptionsamedi 8 juin 2002StatutMembreDernière intervention 6 avril 20101 3 janv. 2007 à 17:08
Bonne année à tous!
Merci cantador, j'ai beaucoup ri
cs_cantador
Messages postés4720Date d'inscriptiondimanche 26 février 2006StatutModérateurDernière intervention31 juillet 202113 2 janv. 2007 à 12:40
lol !
bonne année à tous.
il nous manque juste le petit mot de foxi..
Francky23012301
Messages postés400Date d'inscriptionsamedi 6 août 2005StatutMembreDernière intervention11 février 20161 2 janv. 2007 à 02:40
Il y a pas de petits ou grands développeurs sur CS : Tout le monde à sa place.
flo160fr
Messages postés157Date d'inscriptiondimanche 19 novembre 2000StatutMembreDernière intervention14 avril 2009 1 janv. 2007 à 22:18
Bonne année tout le monde !
{bon je vais me faire tout petit moi... y a que des 'grand' développeur dans le coin}
Francky23012301
Messages postés400Date d'inscriptionsamedi 6 août 2005StatutMembreDernière intervention11 février 20161 1 janv. 2007 à 22:15
buonne é joyeuce nouvel anné à tous é pi à tout : C'est apres combien de verres de ptit rouge ca ?? mdrrrrrr
Bonne année.
Debiars
Messages postés285Date d'inscriptionlundi 16 juin 2003StatutMembreDernière intervention11 février 2018 1 janv. 2007 à 18:54
Excellent, Cirec.
Mais en réalité, ça se dit pas..."TABOU".
Autres expressions pour l'occasion :
Prosit Neu Jahr in deutsch en levant son verre
Gueti rutsch ins Neje en alsacien : bonne glissade vers la nouvelle Année.
en Alsacien ça se corse un petit peut : net z'viel suffa ... lol
Mais Dediars en a certainement une autre version ...
Je vous souhaite pleins de bonnes choses a vous tous pour la nouvelle année
cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 201332 31 déc. 2006 à 18:18
Gutes und fröhliches Jahr an allen und an allen.
Good and merry new year with all and all.
Feliz Año Nuevo buena y con todos y todos.
Buon e nuovo anno felice con tutti e tutti.
Ano novo bom e feliz com tudo e o tudo.
Je crois bien que la moitié de la planète arrivera à comprendre, en dehors des asiatiques (sorry for you).
Pour les petits français (ceux du bon côté du Rhin, lol) : bonne et joyeuse nouvelle année à tous et à toutes !
Euh...Debiars, comment dit-on "avec modération" en Alsacien ? ;o)
Allez une dernière, spécialement pour les picards : buonne é joyeuce nouvel anné à tous é pi à tout'
Debiars
Messages postés285Date d'inscriptionlundi 16 juin 2003StatutMembreDernière intervention11 février 2018 31 déc. 2006 à 13:52
Langue difficile,mmh, but not for un Alsacien...
Damned ! ich habe mich trahi !
Bonne fin d'année à todos !
japee
Messages postés1727Date d'inscriptionvendredi 27 décembre 2002StatutModérateurDernière intervention 6 novembre 20218 31 déc. 2006 à 12:25
Moi japee traduire in françouze splatch :
"Langue allemande... langue difficile"
(merci google)
mais me réfère à la 2eme partie de ton intervention pour dire :
"Nunc est bibendum",
sed
"Uti, non abuti" !
(merci Larousse, les pages roses)
Bon réveillon ! ;-)
cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 201332 30 déc. 2006 à 17:02
Et en plus, ils se paient ma tête ! lol
"Deutsche Sprache .. Schwierige Sprache""
Moi pas comprendre. Toi Japee traduire in latinum ?
Bon réveillon à tous et ne finissez pas tous ronds...
Debiars
Messages postés285Date d'inscriptionlundi 16 juin 2003StatutMembreDernière intervention11 février 2018 28 déc. 2006 à 16:02
Japee : à propos d'Arthur, je n'ai pas trouvé les explicures de Caribensila.
Je présume que tu fais le rapprochement de 8 heures avec Acht Uhr qui veut dire la même chose en allemand. Mais Acht signifie également "attention" comme dans "Achtung" ce qui ajoute un second degré à l'expression. Méfiance donc.
N'empêche que j'aimerai en savoir plus...
cs_cantador
Messages postés4720Date d'inscriptiondimanche 26 février 2006StatutModérateurDernière intervention31 juillet 202113 28 déc. 2006 à 15:52
eh ben dis donc, j'imagine ce que tu vas nous sortir lorsque tu auras delphi 7 !
A propos de RandomRange, effectivement c'est une erreur, il s'agit bien en fait de RandomFrom..
euh, c'est quand ton passage à D7 ?
japee
Messages postés1727Date d'inscriptionvendredi 27 décembre 2002StatutModérateurDernière intervention 6 novembre 20218 28 déc. 2006 à 14:16
Hé oui, Debiars, tu es prié de ne plus jamais oublier le c de Frnacky, lol...
Sinon tu vas te faire appeler Arthur (8 heures, quoi...)
Avec un clin d'oeil amical à Caribensila qui nous a dévoilé l'origine de cette expression, sur le forum.
japee
Messages postés1727Date d'inscriptionvendredi 27 décembre 2002StatutModérateurDernière intervention 6 novembre 20218 28 déc. 2006 à 14:05
Je pense que tu veux parler de RandomFrom(), qui prend un tableau en paramètres.
A moins qu'il ne s'agisse d'une évolution de RandomRange() qu'on m'aurait cachée (D6 ->) ? C'est vrai, quoi, on ne me dit jamais rien, à moi...
Faut dire que sous D4, je n'ai que Random(), que je cuisine à toutes les sauces... ^^
cs_cantador
Messages postés4720Date d'inscriptiondimanche 26 février 2006StatutModérateurDernière intervention31 juillet 202113 28 déc. 2006 à 12:18
merci JAPEE pour l'info..je vais corriger.
J'utilise souvent RandomRange avec les tableaux et là ça marche :
ex: un tableau "TABL" de 5 valeurs [12,7,5,65,1]
le randomRange(TABL) te donne toutes les valeurs possibles..
a+
Debiars
Messages postés285Date d'inscriptionlundi 16 juin 2003StatutMembreDernière intervention11 février 2018 28 déc. 2006 à 09:32
Mille excuses Franqui (oups!) FRANCKY23012301 !!! (-:
japee
Messages postés1727Date d'inscriptionvendredi 27 décembre 2002StatutModérateurDernière intervention 6 novembre 20218 27 déc. 2006 à 23:03
En fait, il faut écrire :
R := RandomRange(2, 5);
La limite supérieure n'est pas incluse, contrairement à ce qui est dit dans l'aide en ligne de Delphi.
japee
Messages postés1727Date d'inscriptionvendredi 27 décembre 2002StatutModérateurDernière intervention 6 novembre 20218 27 déc. 2006 à 22:56
Cantador > Je crois qu'il s'agit d'un bug de RandomRange. Mais je ne vois plus trop où il se situe...
En dépannage, tu peux faire :
case Random(3) + 2 of
Là, Cirec aura sa chance, lol ^^
cs_cantador
Messages postés4720Date d'inscriptiondimanche 26 février 2006StatutModérateurDernière intervention31 juillet 202113 27 déc. 2006 à 22:29
oui, bien vu Yil2201..j'avais même fait en sorte que cela soit automatique (le curseur se déplace tout seul).
En revanche, je ne comprends pas bien pourquoi
RandomRange(2, 4) sort de temps en temps 3 sur un point d'arrêt, mais qu'à l'exécution cela ne sort pas.
si bien que l'avatar de cirec est privé de sa citation..
??
Yil2201
Messages postés134Date d'inscriptionmercredi 1 décembre 2004StatutMembreDernière intervention10 août 2008 27 déc. 2006 à 20:13
Salut! Je sais pas si vous avez vu, mais quand on mets Pause puis qu'on va sur une boule, on a droit à une petite citation de la personne qui se trouve dedans :D
A+
Francky23012301
Messages postés400Date d'inscriptionsamedi 6 août 2005StatutMembreDernière intervention11 février 20161 25 déc. 2006 à 22:59
Debiars, le C dans Frnacky ;).
flo160fr
Messages postés157Date d'inscriptiondimanche 19 novembre 2000StatutMembreDernière intervention14 avril 2009 25 déc. 2006 à 17:35
LOL !
Joyeux Nowël @ TOUS !!
Debiars
Messages postés285Date d'inscriptionlundi 16 juin 2003StatutMembreDernière intervention11 février 2018 25 déc. 2006 à 16:13
...ça me rappelle quelque chose...
Joyeux Noël et Bonne Année les petits.
Franky, sur le e le tréma...:-)
Francky23012301
Messages postés400Date d'inscriptionsamedi 6 août 2005StatutMembreDernière intervention11 février 20161 25 déc. 2006 à 11:09
Hum hum : je savais pas que f0xi poursuivait Delphiprog pour qui lui tire sur le doigt ;).
Ouep Japee: a mon avis la vengeance va etre terrible.
Joyeux Noël à tous : que le papa Nöel nous apporte plein de beaux sources
cs_cantador
Messages postés4720Date d'inscriptiondimanche 26 février 2006StatutModérateurDernière intervention31 juillet 202113 24 déc. 2006 à 23:12
Tant qu'il n'y a ni bûche, ni coup de boule...
joyeux Noël JAPEE !
japee
Messages postés1727Date d'inscriptionvendredi 27 décembre 2002StatutModérateurDernière intervention 6 novembre 20218 24 déc. 2006 à 17:44
Mdr. Tu nous a mis Delphiprog, f0xi et Cirec en boule... prépare toi à te faire enguirlander, Cantador !
Et joyeux Noël à tous :)
cs_cantador
Messages postés4720Date d'inscriptiondimanche 26 février 2006StatutModérateurDernière intervention31 juillet 202113 24 déc. 2006 à 16:57
12 janv. 2011 à 16:16
@ Cantador, parceque c'est ta source et que je n'ai pas trouvé le moyen de déposer un zip.
@+,
Cincap
12 janv. 2011 à 15:21
Pourquoi ne pas déposer cette source ?
cordialement
7 janv. 2011 à 11:30
Voici un effet de neige tombante adapter à la source de Cantador que je salue au passage.
Le background passe par un Timage et est resizé en tenant compte de la résolution de l'écran.
Il y a certainement des améliorations à faire je n'en doute pas.
Un petit bitmap représentant un flocon de neige est nécessaire.
{TriumVirat par cantador}
unit Unitanimation;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, StdCtrls, ComCtrls, Math, Spin;
type
TFTriumvirat = class(TForm)
Timer1: TTimer;
LBDelphiProg: TLabel;
LBFoxi: TLabel;
LBCirec: TLabel;
edlargeur: TSpinEdit;
edhauteur: TSpinEdit;
Image1: TImage;
PaintBox1: TPaintBox;
Panel1: TPanel;
Button1: TButton;
Label1: TLabel;
Edit1: TEdit;
TrackBar1: TTrackBar;
CheckBox1: TCheckBox;
ImaFloc: TImage;
Timer2: TTimer;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure FormPaint(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure TrackBar1Change(Sender: TObject);
procedure FormResize(Sender: TObject);
procedure CheckBox1Click(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure Timer2Timer(Sender: TObject);
end;
var
FTriumvirat: TFTriumvirat;
BmpImage1, BmpImage2, BmpImage3, BmpFond, BmpInvisible: TBitmap;
W, H: integer;
NewRect1, OldRect1, NewRect2, OldRect2, NewRect3, OldRect3: TRect;
X1, Y1, X2, Y2, X3, Y3: integer;
xx1, yy1, xx2, yy2, xx3, yy3, vx1, vy1, vx2, vy2, vx3, vy3: single;
UnionR: Trect;
implementation
{$R *.DFM}
Const
MaxFloc = 100;
Vent: TPoint = (X: -4; Y: 10);
ZoomRatio: Array[1..20] Of Byte =
(2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 7, 8, 9, 10);
Type
TFloc = Class
FIma: TBitmap;
Zoom: Integer;
PosX: Single;
PosY: Single;
RIma: TRect;
Constructor Create;
Procedure MoveIt;
End;
Var
AFloc: Array[1..MaxFloc] Of TFloc;
{----------------------------------------------------------------}
{ Création d'un flocon }
{----------------------------------------------------------------}
Constructor TFloc.Create;
Begin
Zoom := ZoomRatio[RandomRange(1, 20)];
FIma := TBitmap.Create;
FIma.Width := Round(FTriumvirat.ImaFloc.Width * (Zoom / 100));
FIma.Height := Round(FTriumvirat.ImaFloc.Height * (Zoom / 100));
FIma.PixelFormat := pf24bit;
FIma.Transparent := True;
FIma.Canvas.StretchDraw(FIma.Canvas.ClipRect, FTriumvirat.ImaFloc.Picture.Bitmap);
PosY := RandomRange(0, FTriumvirat.ClientHeight);
PosX := RandomRange(0, FTriumvirat.ClientWidth);
RIma.Left := Round(PosX);
RIma.Top := Round(PosY);
RIma.Right := RIma.Left + FIma.Width;
RIma.Bottom := RIma.Top + FIma.Height;
End;
{----------------------------------------------------------------}
{ Restaure, déplace et déssine un flocon }
{----------------------------------------------------------------}
Procedure TFloc.MoveIt;
Begin
FTriumvirat.Canvas.CopyRect(RIma, FTriumvirat.ImaFloc.Picture.Bitmap.Canvas, RIma);
PosX := PosX + ((Vent.X * RandomRange(3, 5 * Zoom)) / 30);
PosY := PosY + ((Vent.Y * RandomRange(3, 5 * Zoom)) / 30);
RIma.Left := Round(PosX);
RIma.Top := Round(PosY);
RIma.Right := RIma.Left + FIma.Width;
RIma.Bottom := RIma.Top + FIma.Height;
FTriumvirat.Canvas.StretchDraw(RIma, FIma);
If (PosY > FTriumvirat.ClientHeight) And (Vent.Y > 0) Then
Begin
PosX := RandomRange(0, FTriumvirat.ClientWidth);
PosY := -FIma.Height;
End
ELse
If (PosY < FIma.Height) And (Vent.Y < 0) Then
Begin
PosX := RandomRange(0, FTriumvirat.ClientWidth);
PosY := FTriumvirat.ClientHeight;
End;
If (PosX > FTriumvirat.ClientWidth) And (Vent.X > 0) Then
PosX := -FIma.Width
Else
If (PosX < FIma.Width) And (Vent.X < 0) Then
PosX := FTriumvirat.ClientWidth;
End;
procedure CleanPositionOf(var OldRect: TRect);
begin
{Effacement des anciennes positions}
BmpInvisible.Canvas.CopyRect(OldRect, bmpFond.canvas, OldRect);
end;
procedure FusionPositionOf(var UnionR, OldRect, NewRect: TRect);
begin
{Union des positions anciennes et nouvelles}
UnionRect(UnionR, OldRect, NewRect);
FTriumVirat.PaintBox1.Canvas.CopyRect(UnionR, BmpInvisible.Canvas, UnionR);
OldRect := NewRect;
end;
procedure NewPositionOf(var vx, vy, xx, yy: single; var x, y: integer; var RNew: TRect; Bmp: TBitmap);
begin
{ rebonds }
if (x < 0) or (x > Bmpfond.width - W) then
vx := -vx;
if (y < 0) or (y > Bmpfond.height - H) then
vy := -vy;
xx := xx + vx;
yy := yy + vy;
x := trunc(xx);
y := trunc(yy);
RNew := bounds(x, y, W, H);
BmpInvisible.Canvas.Draw(x, y, Bmp);
end;
procedure TFTriumvirat.FormCreate(Sender: TObject);
var
HH :HDC;
largeur:integer;
hauteur:integer;
BMPLoaded : boolean;
NewH, NewW, OldSBM : integer;
begin
HH:=getdc(GetDesktopWindow);
largeur:=GetDeviceCaps(HH,HORZRES);
hauteur:=GetDeviceCaps(HH,VERTRES);
edlargeur.value := largeur;
edhauteur.Value := hauteur;
{ initialisation }
BMPLoaded := false;
BmpFond := TBitmap.Create;
BmpFond.LoadFromFile('fond3.bmp');
BMPLoaded := true;
{ si BMP est prét }
if BMPLoaded then
begin
NewW:=Edlargeur.value ;
NewH:=Edhauteur.value ;
end;
{ enfin on vas injecter BMP dans le bitmap de Image1 (autosize = true) }
with image1.picture.bitmap do
begin
{ on definit les nouvelles dimensions }
width := NewW;
height := NewH;
{ on travail en couleurs 24bpc }
pixelformat := pf24bit;
{ on sauvegarde l'ancien mode de redimension du canvas }
OldSBM := GetStretchBltMode(Canvas.Handle);
{ et on le definit en mode HALFTONE }
SetStretchBltMode(Canvas.Handle, HALFTONE);
{ on dessine l'image }
StretchBlt( Canvas.Handle, 0, 0, NewW, NewH,
BMPfond.Canvas.Handle, 0, 0, BMPfond.Width, BMPfond.Height,
SRCCOPY);
{ on restaure le mode de redimensionnement du canvas }
SetStretchBltMode(Canvas.Handle, OldSBM);
BMPfond.Assign(image1.picture.bitmap);
image1.refresh;
BmpInvisible := TBitmap.Create;
BmpInvisible.Canvas.StretchDraw(BmpInvisible.Canvas.ClipRect,BmpFond);
BmpImage1 := TBitmap.Create;
BmpImage2 := TBitmap.Create;
BmpImage3 := TBitmap.Create;
BmpInvisible.Assign(Bmpfond);
BmpImage1.LoadFromFile('foxirond.bmp');
BmpImage2.LoadFromFile('delphiprogrond.bmp');
BmpImage3.LoadFromFile('cirecrond.bmp');
W := Bmpimage1.width;
H := Bmpimage1.height;
BmpImage1.Transparent := true;
BmpImage1.TransParentColor := BmpImage1.canvas.pixels[1, 1];
BmpImage2.Transparent := True;
BmpImage2.TransParentColor := BmpImage2.canvas.pixels[1, 1];
BmpImage3.Transparent := True;
BmpImage3.TransParentColor := BmpImage3.canvas.pixels[1, 1];
// initialisation
xx1 := 1;
yy1 := 1;
x1 := trunc(xx1);
y1 := trunc(yy1);
vx1 := 1.5;
vy1 := 0.5;
NewRect1 := bounds(x1, y1, W, H);
OldRect1 := NewRect1;
xx2 := 200;
yy2 := 200;
x2 := trunc(xx2);
y2 := trunc(yy2);
vx2 := 1.5;
vy2 := 0.5;
NewRect2 := bounds(x2, y2, W, H);
OldRect2 := NewRect2;
xx3 := 80; yy3 := 80;
x3 := trunc(xx3);
y3 := trunc(yy3);
vx3 := 1.5;
vy3 := 0.5;
NewRect3 := bounds(x3, y3, W, H);
OldRect3 := NewRect3;
LBDelphiProg.Hint := 'Ben celle-là vous me la copierez..';
LBFoxi.Hint := 'Même à mon niveau, j''aurai jamais fais un truc pareil..';
LBCirec.Hint := 'Dis-donc, faudrait p''tet mettre quelque chose dans le zip..';
end;
end;
procedure TFTriumvirat.FormDestroy(Sender: TObject);
begin
BmpFond.free;
BmpInvisible.free;
BmpImage1.Free;
BmpImage2.Free;
BmpImage3.Free;
end;
procedure TFTriumvirat.FormPaint(Sender: TObject);
begin
// PaintBox1.Canvas.Draw(0, 0, Bmpfond);
BMPfond.Assign(image1.picture.bitmap);
end;
procedure TFTriumvirat.Button1Click(Sender: TObject);
begin
close;
end;
procedure TFTriumvirat.Timer1Timer(Sender: TObject);
var
n: integer;
begin
for n := 1 to trackbar1.position do { boucle de répétition d'affichage }
begin
CleanPositionOf(OldRect1);
CleanPositionOf(OldRect2);
CleanPositionOf(OldRect3);
NewPositionOf(vx1, vy1, xx1, yy1, x1, y1, NewRect1, BmpImage1);
NewPositionOf(vx2, vy2, xx2, yy2, x2, y2, NewRect2, BmpImage2);
NewPositionOf(vx3, vy3, xx3, yy3, x3, y3, NewRect3, BmpImage3);
FusionPositionOf(UnionR, OldRect1, NewRect1);
FusionPositionOf(UnionR, OldRect2, NewRect2);
FusionPositionOf(UnionR, OldRect3, NewRect3);
end;
end;
procedure TFTriumvirat.TrackBar1Change(Sender: TObject);
begin
Edit1.text := inttostr(trackbar1.position);
end;
procedure TFTriumvirat.FormResize(Sender: TObject);
begin
BmpFond.Width := image1.Width;
BmpFond.Height := image1.Height;
end;
procedure TFTriumvirat.CheckBox1Click(Sender: TObject);
var
Cpt: Tpoint;
begin
//Timer1.Enabled := not (Timer1.Enabled);
LBDelphiProg.Visible := not (Timer1.Enabled);
LBFoxi.Visible := not (Timer1.Enabled);
LBCirec.Visible := not (Timer1.Enabled);
if not (Timer1.Enabled) then
begin
LBFoxi.Left := x1;
LBFoxi.Top := y1 ;
LBDelphiProg.Left := x2;
LBDelphiProg.Top := y2;
LBCirec.Left := x3;
LBCirec.Top := y3;
Application.HintPause := 10;
Application.HintHidePause := 5000;
randomize;
case RandomRange(2, 5) of
2:
begin
Cpt := Point(LBDelphiProg.Width div 2, LBDelphiProg.Height div 2);
Cpt := LBDelphiProg.ClientToScreen(Cpt);
SetCursorPos(Cpt.X, Cpt.Y);
end;
3:
begin
Cpt := Point(LBFoxi.Width div 2, LBFoxi.Height div 2);
Cpt := LBFoxi.ClientToScreen(Cpt);
SetCursorPos(Cpt.X, Cpt.Y);
end;
4:
begin
Cpt := Point(LBCirec.Width div 2, LBCirec.Height div 2);
Cpt := LBCirec.ClientToScreen(Cpt);
SetCursorPos(Cpt.X, Cpt.Y);
end;
end;
sleep(1000);
CheckBox1.SetFocus;
end;
end;
procedure TFTriumvirat.FormActivate(Sender: TObject);
Var
i, j: Integer;
R, G, B: Byte;
Begin
Randomize;
{ Création des flocons }
For i := 1 To MaxFloc Do
AFloc[i] := TFloc.Create;
Application.ProcessMessages;
{ Sauvegarde de l'arrière-plan avant animation }
ImaFloc.Picture.Bitmap.Width := Width;
ImaFloc.Picture.Bitmap.Height := Height;
ImaFloc.Picture.Bitmap.Canvas.CopyRect(ClientRect, Canvas, ClientRect);
{ Mise en route de l'animation }
Timer1.Enabled := True ;
Timer2.Enabled := True ;
end;
procedure TFTriumvirat.Timer2Timer(Sender: TObject);
Var
i: Integer;
Begin
{ Mouvements des flocons }
For i := 1 To MaxFloc Do AFloc[i].MoveIt;
{ Sortie du programme }
If (GetActiveWindow <> Handle) Then Close;
end;
end.
3 janv. 2007 à 17:08
Merci cantador, j'ai beaucoup ri
2 janv. 2007 à 12:40
bonne année à tous.
il nous manque juste le petit mot de foxi..
2 janv. 2007 à 02:40
1 janv. 2007 à 22:18
{bon je vais me faire tout petit moi... y a que des 'grand' développeur dans le coin}
1 janv. 2007 à 22:15
Bonne année.
1 janv. 2007 à 18:54
Mais en réalité, ça se dit pas..."TABOU".
Autres expressions pour l'occasion :
Prosit Neu Jahr in deutsch en levant son verre
Gueti rutsch ins Neje en alsacien : bonne glissade vers la nouvelle Année.
C'est mon dernier mot !
31 déc. 2006 à 20:27
en Alsacien ça se corse un petit peut : net z'viel suffa ... lol
Mais Dediars en a certainement une autre version ...
Je vous souhaite pleins de bonnes choses a vous tous pour la nouvelle année
31 déc. 2006 à 18:18
Good and merry new year with all and all.
Feliz Año Nuevo buena y con todos y todos.
Buon e nuovo anno felice con tutti e tutti.
Ano novo bom e feliz com tudo e o tudo.
Je crois bien que la moitié de la planète arrivera à comprendre, en dehors des asiatiques (sorry for you).
Pour les petits français (ceux du bon côté du Rhin, lol) : bonne et joyeuse nouvelle année à tous et à toutes !
Euh...Debiars, comment dit-on "avec modération" en Alsacien ? ;o)
Allez une dernière, spécialement pour les picards : buonne é joyeuce nouvel anné à tous é pi à tout'
31 déc. 2006 à 13:52
Damned ! ich habe mich trahi !
Bonne fin d'année à todos !
31 déc. 2006 à 12:25
"Langue allemande... langue difficile"
(merci google)
mais me réfère à la 2eme partie de ton intervention pour dire :
"Nunc est bibendum",
sed
"Uti, non abuti" !
(merci Larousse, les pages roses)
Bon réveillon ! ;-)
30 déc. 2006 à 17:02
"Deutsche Sprache .. Schwierige Sprache""
Moi pas comprendre. Toi Japee traduire in latinum ?
Bon réveillon à tous et ne finissez pas tous ronds...
28 déc. 2006 à 16:02
Je présume que tu fais le rapprochement de 8 heures avec Acht Uhr qui veut dire la même chose en allemand. Mais Acht signifie également "attention" comme dans "Achtung" ce qui ajoute un second degré à l'expression. Méfiance donc.
N'empêche que j'aimerai en savoir plus...
28 déc. 2006 à 15:52
A propos de RandomRange, effectivement c'est une erreur, il s'agit bien en fait de RandomFrom..
euh, c'est quand ton passage à D7 ?
28 déc. 2006 à 14:16
Sinon tu vas te faire appeler Arthur (8 heures, quoi...)
Avec un clin d'oeil amical à Caribensila qui nous a dévoilé l'origine de cette expression, sur le forum.
28 déc. 2006 à 14:05
A moins qu'il ne s'agisse d'une évolution de RandomRange() qu'on m'aurait cachée (D6 ->) ? C'est vrai, quoi, on ne me dit jamais rien, à moi...
Faut dire que sous D4, je n'ai que Random(), que je cuisine à toutes les sauces... ^^
28 déc. 2006 à 12:18
J'utilise souvent RandomRange avec les tableaux et là ça marche :
ex: un tableau "TABL" de 5 valeurs [12,7,5,65,1]
le randomRange(TABL) te donne toutes les valeurs possibles..
a+
28 déc. 2006 à 09:32
27 déc. 2006 à 23:03
R := RandomRange(2, 5);
La limite supérieure n'est pas incluse, contrairement à ce qui est dit dans l'aide en ligne de Delphi.
27 déc. 2006 à 22:56
En dépannage, tu peux faire :
case Random(3) + 2 of
Là, Cirec aura sa chance, lol ^^
27 déc. 2006 à 22:29
En revanche, je ne comprends pas bien pourquoi
RandomRange(2, 4) sort de temps en temps 3 sur un point d'arrêt, mais qu'à l'exécution cela ne sort pas.
si bien que l'avatar de cirec est privé de sa citation..
??
27 déc. 2006 à 20:13
A+
25 déc. 2006 à 22:59
25 déc. 2006 à 17:35
Joyeux Nowël @ TOUS !!
25 déc. 2006 à 16:13
Joyeux Noël et Bonne Année les petits.
Franky, sur le e le tréma...:-)
25 déc. 2006 à 11:09
Ouep Japee: a mon avis la vengeance va etre terrible.
Joyeux Noël à tous : que le papa Nöel nous apporte plein de beaux sources
24 déc. 2006 à 23:12
joyeux Noël JAPEE !
24 déc. 2006 à 17:44
Et joyeux Noël à tous :)
24 déc. 2006 à 16:57