Effets images

Résolu
Matt 261 Messages postés 1173 Date d'inscription mercredi 2 novembre 2005 Statut Membre Dernière intervention 10 septembre 2011 - 21 mars 2006 à 16:48
Matt 261 Messages postés 1173 Date d'inscription mercredi 2 novembre 2005 Statut Membre Dernière intervention 10 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...

6 réponses

f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
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;

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%">
3
Matt 261 Messages postés 1173 Date d'inscription mercredi 2 novembre 2005 Statut Membre Dernière intervention 10 septembre 2011 3
22 mars 2006 à 12:51
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...
0
Matt 261 Messages postés 1173 Date d'inscription mercredi 2 novembre 2005 Statut Membre Dernière intervention 10 septembre 2011 3
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...
0
Matt 261 Messages postés 1173 Date d'inscription mercredi 2 novembre 2005 Statut Membre Dernière intervention 10 septembre 2011 3
13 avril 2006 à 17:01
Bon apparement personne ne sait mais c'est pas grave, tu m'avances quand-même beaucoup f0xi, merci.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
salim07360 Messages postés 17 Date d'inscription mardi 6 décembre 2005 Statut Membre Dernière intervention 22 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 .......
0
Matt 261 Messages postés 1173 Date d'inscription mercredi 2 novembre 2005 Statut Membre Dernière intervention 10 septembre 2011 3
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
0
Rejoignez-nous