Matt 261
Messages postés1173Date d'inscriptionmercredi 2 novembre 2005StatutMembreDernière intervention10 septembre 2011
-
21 mars 2006 à 16:48
Matt 261
Messages postés1173Date d'inscriptionmercredi 2 novembre 2005StatutMembreDernière intervention10 septembre 2011
-
13 janv. 2008 à 14:19
Bonjour à tous !
Je suis en train de finir mon écran de veille visible ICI et je voulais y ajouter des effets sur les images par exemple apprition/disparition en fondu ou avec des lignes un petit truc "à la PowerPoint" si vous voyez ce que je veux dire. Malgré mes recherches sur Internet je n'est rien trouvé mais si vous avez des bouts de code ou une solution je vous en serais très reconnaissant...
@+ et merci à ceux qui me répondrons
Matt
<HR width="100%" SIZE=2>
La paresse est la mère du génie...
f0xi
Messages postés4205Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 202235 22 mars 2006 à 00:11
si tu travail en GDI et pas en OpenGL ou DirectX, il faudrat travailler la plupart du temps sur les pixels grace a ScanLine (TBitmap) pour faire des effets.
exemple de fondus (Fade out et Fade in) :
uses math;
type
TRGBRec = record
B,G,R : byte;
end;
TRGBRecArray = array[0..32767] of TRGBRec;
pRGBRecArray = ^TRGBRecArray;
procedure TForm1.FormCreate(Sender: TObject);
begin
BMPS := TBitmap.Create;
BMPS.Assign(image1.Picture.Bitmap);
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
BMPS.Free;
end;
procedure Fade5(const Src : TBitmap; Dest : TBitmap; const Pass : integer);
var
ScrLines,{Src}
BufLines {Buf} : PRGBRecArray;
X,Y : integer;
Buf : TBitmap;
begin
Buf := TBitmap.Create;
Buf.PixelFormat := pf24bit;
Buf.Width := Src.Width;
Buf.Height := Src.Height;
for Y := 0 to Src.Height-1 do begin
ScrLines := Src.ScanLine[Y];
BufLines := Buf.ScanLine[Y];
for X := 0 to Src.Width-1 do begin
BufLines[X] := ScrLines[X];
with BufLines[X] do begin
R := max(R-(5*Pass),0);
G := max(G-(5*Pass),0);
B := max(B-(5*Pass),0);
end;
end;
end;
Dest.Assign(Buf);
Buf.free;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Case Effect of
{Fade out}
0 : begin Fade5(BMPS,image1.Picture.Bitmap,PassCount); inc(PassCount); end;
{Fade in}
1 : begin Fade5(BMPS,image1.Picture.Bitmap,PassCount); dec(PassCount); end;
end;
if PassCount = PassMax then begin
Button1.Enabled := true;
Button2.Enabled := true;
Timer1.Enabled := false;
end;
end;
Matt 261
Messages postés1173Date d'inscriptionmercredi 2 novembre 2005StatutMembreDernière intervention10 septembre 20113 27 mars 2006 à 17:48
Ca marche super...
Question suivante : quelqu'un saurait-il comment faire pour "ouvrir" et "fermer" l'image de haut en bas ou dans n'importe quel sens?
Merci d'avance
Matt
<HR width="100%" SIZE=2>
La paresse est la mère du génie...
salim07360
Messages postés17Date d'inscriptionmardi 6 décembre 2005StatutMembreDernière intervention22 janvier 2008 12 janv. 2008 à 17:56
slt ....e developpe des applications en delphi 7 , j utilise l'opengl pour delphi , je le trouve plus facil et plus eeficace pour la programmation des objets 3d ou graphique , je te conseille d'essayer ce truc , et je suis sur que tu va pas regretter .....et si tu as du nouveau au domaine , stp , mait moi au courant , pke je ss klk1 interessé .......voilà , bon courage , et merçi .......
Matt 261
Messages postés1173Date d'inscriptionmercredi 2 novembre 2005StatutMembreDernière intervention10 septembre 20113 13 janv. 2008 à 14:19
Salut,
j'ai essayé OpenGL mais je suis un peu faché avec lui ! Pour arriver à faire tourner quelque chose de correct, faut vraiment prendre beaucoup de temps !
@+
Matt
<hr size="2" width="100%" />La paresse est la mère du génie...
http://www.mx-dev.net