voila un ptit algorithme de rotation d'une image pompée d'une source sur vbfrance.com
Il n'est pas optimizée alors g besoin d'aide (2 seconde pour la rotation d'image, et c normalement pour un moteur 2D :s)
Source / Exemple :
function SetImgAngle(angle:integer; source:TBitmap):TBitmap;
var
n:integer;
Largeur,ecart:integer;
pi2:extended;
z:extended;
col_prov,lig_prov:integer;
i,j:integer;
couleur:DWord;
xx,yy,x,y:integer;
//Pour accelerer les chose: variable d'optimization
cz,sz:extended;
czpi,szpi:extended;
begin
n:=source.Width;
Largeur:= source.Width div 2;
result:=TBitmap.create;
result.Height:=300;result.Width:=300;//a changer;
ecart:= trunc((Sqrt(2*Sqr(n)) - n)/2);
pi2:= pi / 2;
z:= 0.01745 * angle;
x:=source.Width div 2;y:=source.Height div 2;
cz:=Cos(z);sz:=Sin(z);
czpi:=Cos(z + pi2);
szpi:=Sin(z + pi2);
For i:= -ecart To n + ecart do begin
col_prov:= trunc(Largeur + ((i - Largeur) * cz));
lig_prov:= trunc(Largeur + ((i - Largeur) * sz));
For j:= -ecart To n + ecart do begin
xx:=trunc(col_prov + ((j - Largeur) * czpi));
yy:=trunc(lig_prov + ((j - Largeur) * szpi));
Couleur:=source.Canvas.Pixels [xx,yy];
If (Couleur <> -1) And (Couleur <> $FFFFFF) Then begin
xx:=i + (X - Largeur);
yy:=j + (Y - Largeur);
result.Canvas.Pixels[xx,yy]:=Couleur
end;
end;
end;
end;
Conclusion :
pour le lancer:
2 images + un scrollbar (par exemple):
image2.picture.Bitmap:=SetImgAngle(scrollbar1.Position,image1.Picture.Bitmap)
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.