Effets images [Résolu]

Signaler
Messages postés
1173
Date d'inscription
mercredi 2 novembre 2005
Statut
Membre
Dernière intervention
10 septembre 2011
-
Messages postés
1173
Date d'inscription
mercredi 2 novembre 2005
Statut
Membre
Dernière intervention
10 septembre 2011
-
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...

6 réponses

Messages postés
4202
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
13 juin 2020
37
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;

var
BMPS : TBitmap;
PassCount,
PassMax : integer;
Effect : integer = 0;

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.Button1Click(Sender: TObject);
{Fade out}
begin
PassCount := 0;
PassMax := 52;
Effect := 0;
Timer1.Enabled := true;
Button1.Enabled := false;
Button2.Enabled := false;
end;

procedure TForm1.Button2Click(Sender: TObject);
{Fade in}
begin
PassCount := 52;
PassMax := 0;
Effect := 1;
Timer1.Enabled := true;
Button1.Enabled := false;
Button2.Enabled := false;
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;

<hr size="2" width="100%">
Messages postés
1173
Date d'inscription
mercredi 2 novembre 2005
Statut
Membre
Dernière intervention
10 septembre 2011
3
Merci beaucoup f0xi. Oui j'ia voulu traivailler en OpenGl mais je ne peux pas l'installer ond cvoila mais encore merci beaucoup.

Matt


<HR width="100%" SIZE=2>
La paresse est la mère du génie...
Messages postés
1173
Date d'inscription
mercredi 2 novembre 2005
Statut
Membre
Dernière intervention
10 septembre 2011
3
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...
Messages postés
1173
Date d'inscription
mercredi 2 novembre 2005
Statut
Membre
Dernière intervention
10 septembre 2011
3
Bon apparement personne ne sait mais c'est pas grave, tu m'avances quand-même beaucoup f0xi, merci.
Messages postés
17
Date d'inscription
mardi 6 décembre 2005
Statut
Membre
Dernière intervention
22 janvier 2008

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 .......
Messages postés
1173
Date d'inscription
mercredi 2 novembre 2005
Statut
Membre
Dernière intervention
10 septembre 2011
3
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