AlphaBlend

Résolu
cs_ferdo Messages postés 13 Date d'inscription dimanche 23 février 2003 Statut Membre Dernière intervention 2 mars 2012 - 1 nov. 2011 à 11:08
cs_ferdo Messages postés 13 Date d'inscription dimanche 23 février 2003 Statut Membre Dernière intervention 2 mars 2012 - 3 nov. 2011 à 06:12
Bonjour

Comment controler la valeur AlphoBlend avec combinaison de touche par exemple ctrl + pour augnenter sa valeur ou ctrl - pour baisser sa valeur

bonne journée

merci

ferdo

5 réponses

ThWilliam Messages postés 418 Date d'inscription mardi 3 janvier 2006 Statut Membre Dernière intervention 26 novembre 2013 4
2 nov. 2011 à 10:42
Bon, ça c'est le principe, mais voici une solution plus heureuse (ajout d'une fonction) :

function ModifAlphaBlendValue(Alpha: integer; Value: integer): integer;
begin
   Result:= Alpha + Value;
   if Result > 255 then Result:= 255
     else if Result < 50 then Result:= 50;
end;

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
    case Key of
       VK_ADD: if (ssCtrl in Shift) then
                   AlphaBlendValue:= ModifAlphaBlendValue(AlphaBlendValue, 5);
       VK_SUBTRACT : if (ssCtrl in Shift) then
                        AlphaBlendValue:= ModifAlphaBlendValue(AlphaBlendValue, -5);
    end;
end;
3
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
2 nov. 2011 à 12:24
Salut,

perso je ferais plutôt comme ça:
[hr]function ModifAlphaBlendValue(Alpha: integer; Value: integer): integer;

[b]begin
   /bResult:=  Alpha + Value;
    if  Result > 255 then Result: = 255
     else if Result < 50 then Result:=  50;
end ;

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
[b]begin
  if /bShift  = [ssCtrl] [b]then
    case /bKey [b]of
       /bVK_ADD: AlphaBlendValue:= ModifAlphaBlendValue(AlphaBlendValue, 5);
       VK_SUBTRACT : AlphaBlendValue:= ModifAlphaBlendValue(AlphaBlendValue, -5);
    end;
end;
[hr]
1°) ça éclaircit un peu le code
2°) ça ne répond que si "Ctrl" est maintenue toute seule.

@ThWilliam:
Ton code fonctionne si, au moins, la touche Ctrl est maintenue ... ex. "AltGr" + "VK_ADD" fonctionne tout comme "Ctrl + Alt" + "VK_ADD"
etc. etc.


[hr]@+Cirec
[hr]
3
ThWilliam Messages postés 418 Date d'inscription mardi 3 janvier 2006 Statut Membre Dernière intervention 26 novembre 2013 4
2 nov. 2011 à 09:51
Salut.

1) Initialiser la propriété Keypreview de ta Form = true
2) Utiliser l'événement OnKeyDown de ta Form :

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var
  A: integer;
begin
    A:= AlphaBlendValue;
    if (ssCtrl in Shift) and (Key = VK_ADD) then  // Ctrl +
          A:= A + 5
    else
    if (ssCtrl in Shift) and (Key = VK_SUBTRACT) then  // Ctrl -
          A:= A - 5;
    if A < 50 then A:= 50
       else if A > 255 then A:= 255;
    AlphaBlendValue:= A;
end;



A +
Thierry
0
ThWilliam Messages postés 418 Date d'inscription mardi 3 janvier 2006 Statut Membre Dernière intervention 26 novembre 2013 4
2 nov. 2011 à 12:44
@Cirec :
bien vu !
Je crois que j'étais un peu dans le gaz ce matin...

A+
Thierry
0

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

Posez votre question
cs_ferdo Messages postés 13 Date d'inscription dimanche 23 février 2003 Statut Membre Dernière intervention 2 mars 2012
3 nov. 2011 à 06:12
c'est super
merci a tous


bonne journée

ferdo
0