grayscale fading pour l'ecran

cs_AgentAmine Messages postés 28 Date d'inscription mercredi 24 juin 2009 Statut Membre Dernière intervention 11 avril 2012 - 16 avril 2010 à 23:50
cs_AgentAmine Messages postés 28 Date d'inscription mercredi 24 juin 2009 Statut Membre Dernière intervention 11 avril 2012 - 17 avril 2010 à 17:58
Salut,
Je veux faire un disparaition graduelle de l'écran au gris (grayscale fading), comme xp faire quand on change le theme, ou avast en cas de desactivation, (voir l'image). je veut aussi cache le barre des taches. idee ou code ?

merci d'avance - AgentAmine

4 réponses

Utilisateur anonyme
17 avril 2010 à 13:20
Salut

Si ton objectif est de diminuer la luminosité de l'écran, j'avais déposé un snippet sur le sujet.

{>>DETERMINATION DE LA LUMINOSITE}
Function FindActualGamma : integer;
var
  hGammaDC : HDC;
  GammaArray: array[0..2,0..255] of word;
begin
  hGammaDC := GetDC(0);
  GetDeviceGammaRamp(hGammaDC, GammaArray);
  ReleaseDC(0, hGammaDC);
  result:=GammaArray[0,1]-128;
end;
{>>MODIFICATION DE LA LUMINOSITE }
Procedure ChangeLuminosity(Brightness: integer);
var
  hGammaDC : HDC;
  GammaArray: array[0..2] of array [0..255] of word;
  Index, ArrayValue: integer;
begin
  hGammaDC := GetDC(0);
  for Index := 0 to 255 do
    begin
    ArrayValue := Index * (Brightness + 128);
    if (ArrayValue > 65535) then ArrayValue := 65535;
    GammaArray[0,Index] := WORD(ArrayValue);
    GammaArray[1,Index] := WORD(ArrayValue);
    GammaArray[2,Index] := WORD(ArrayValue);
    end;
  SetDeviceGammaRamp(hGammaDC, GammaArray);
  ReleaseDC(0, hGammaDC);
end;
{>>DIMINUTION DE LA LUMINOSITE}
procedure TForm1.DownLuminosity_Bt(Sender: TObject);
Var
  i,ActualGamma : integer;
Begin
  ActualGamma:=FindActualGamma;
  For i:=ActualGamma downto 64 do ChangeLuminosity(i);
end;
{>>AUGMENTATION DE LA LUMINOSITE}
procedure TForm1.UpLuminosity_Bt(Sender: TObject);
Var
  i,ActualGamma : integer;
Begin
  ActualGamma:=FindActualGamma;
  For i:=ActualGamma to 128 do ChangeLuminosity(i);
end;
0
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
17 avril 2010 à 15:30
Salut Francky,
je crois que ce que veut faire AgentAmine est de transformer une partie particulière de l'écran en noir et blanc avec un léger fondu. Un peu comme quand tu ouvres la boîte de dialogue "Arrêter l'ordinateur" sous XP, le bureau derrière devient de plus en plus terne jusqu'à devenir noir et blanc.

Pour ceci, je pense que la meilleure solution est de prendre une capture d'écran du bureau, et appliquer un noir et blanc progressif dessus, et afficher cette image traitée dans une fiche derrière ta fiche à toi (qui contient ton programme). Pour l'algorithme du grayscale fading, tu peux soit le pomper quelque part, soit le déduire toi-même. Voici un indice :
- si un pixel a couleurs (R, G, B), son équivalent en noir est blanc aura comme couleurs (N, N, N) ou N = (R + G + B) / 3
- considère alors la différence R - N, G - N, B - N et applique un simple algorithme de dégradé en fonction de la durée du fading

Pour cacher la barre des tâches, il existe un (ou plusieurs) snippet(s) sur www.codyx.org, on te laisse chercher.

Cordialement, Bacterius !
0
Utilisateur anonyme
17 avril 2010 à 17:35
Je n'avais pas compris cela mais avec les API que j'utilise, il peut parfaitement arriver à ses fins
0
cs_AgentAmine Messages postés 28 Date d'inscription mercredi 24 juin 2009 Statut Membre Dernière intervention 11 avril 2012
17 avril 2010 à 17:58
Salut Bacterius,
Pouvez-vous écrire un code pour moi ce qui montre l'image progressivement en plein écran avec la barre des tâches couvertes. Je vais chercher le grayscaling et la capture d'écran moi-même,
et merci d'avance
0
Rejoignez-nous