comment puis-je appeler cette fonction?

Résolu
sarssor Messages postés 63 Date d'inscription dimanche 22 juillet 2007 Statut Membre Dernière intervention 28 avril 2011 - 11 mars 2009 à 17:17
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 - 19 avril 2009 à 12:51
Salut

comment puis-je appeler cette fonction?
pour faire la transparence d'un bitmap

http://www.delphi-central.com/tutorials/AlphaBlend.aspx

33 réponses

Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
11 mars 2009 à 20:27
Pour l'API AlphaBlend, il suffit de passer quelques nombres en paramètre.
Voici, par exemple, pour alpha-blender 2 bitmaps de même taille (200 x 200).
(Pour la concrétisation, un bitmap de chat et un bitmap d'oiseau).

procedure AlphaBlendMyPets; // ^^
Var
BFunc: BLENDFUNCTION;
begin
BFunc.BOP := AC_SRC_OVER;
BFunc.BlendFlags := 0;
BFunc.SourceConstantAlpha := 128; // Allez, 128/255 transparence :)
BFunc.AlphaFormat := 0;
AlphaBlend(Bitmap2.Handle, 0, 0, 200, 200, Bitmap1.Handle, 0, 0, 200, 200, BFunc); // On applique l'alphablend 128/255
// Le dessin alphablendé ira dans le Bitmap2 (destination handle de l'API)
end;

Voilà :)

Cordialement, Bacterius !
0
sarssor Messages postés 63 Date d'inscription dimanche 22 juillet 2007 Statut Membre Dernière intervention 28 avril 2011
12 mars 2009 à 12:27
Salut

les 2 fonctions sont pour mois pas facile de comprendre : (
Je voudrais utiliser cette fonction pas plus
http://www.delphi-central.com/tutorials/AlphaBlend.aspx

je voudrais faire cet effectue Effet (Transparente) :
 

peut tu donner un exemple pour appeler cette fonction
0
Nicolas___ Messages postés 992 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 24 avril 2013 1
12 mars 2009 à 12:49
sous delphi7

tu fais AlphaBlend := True et tu joue avec AplhaBlendValue pour régler l'opacité de ta fiche ...

tout simplement !
0
Nicolas___ Messages postés 992 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 24 avril 2013 1
12 mars 2009 à 12:50
désolé pour le double post

Exemple :

procedure TForm1.FormCreate(Sender: TObject);
begin
  AlphaBlend := True;
  AlphaBlendValue := 125;
end;
0

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

Posez votre question
sarssor Messages postés 63 Date d'inscription dimanche 22 juillet 2007 Statut Membre Dernière intervention 28 avril 2011
12 mars 2009 à 13:10
No No
Je ne voudrais pas faire cet Effet pour Formulaire. Mais Pour Image1.Bitmap seulement
0
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
12 mars 2009 à 16:56
Tu as regardé mon message ?
Il explique comment appeller l'API ...

Cordialement, Bacterius !
0
sarssor Messages postés 63 Date d'inscription dimanche 22 juillet 2007 Statut Membre Dernière intervention 28 avril 2011
12 mars 2009 à 17:35
Oui mais il'ya  des fautes dans le code
par exemple :
<title>HTML clipboard</title>procedure AlphaBlendMyPets; // ^^

 Var

 BFunc: BLENDFUNCTION;

 Bitmap1,Bitmap2 : TBitmap;

 begin

 Bitmap1:= Image1.Picture.Bitmap;

 Bitmap2:=Image2.Picture.Bitmap;

 //BFunc.BOP := AC_SRC_OVER;

  BFunc.BlendOp := AC_SRC_OVER;

 BFunc.BlendFlags : = 0;

 BFunc.SourceConstantAlpha := 128; // Allez, 128/255 transparence :)

 BFunc.AlphaFormat := 0;

 AlphaBlend(Bitmap2.Handle, 0, 0, 200, 200, Bitmap1.Handle, 0, 0, 200, 200,
BFunc); // Error ici aussi !!!

 end;  
0
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
12 mars 2009 à 17:41
Oui c'est BlendOp, petite erreur de ma part.
Sinon, evidemment il faut faire procedure TForm1.AlphaBlendMyPets; ajouter la déclaration dans la fiche aussi, et ajouter 2 images remplies à ta fiche.
Ensuite, je ne sais pas pourquoi l'alphablend foire chez toi, chez moi ça marche bien ...

Je reposte la version corrigée donc :

[Ajouter 2 TImage à sa fiche, remplies d'un bitmap 200*200 chacune]

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;

type
TForm1 = class(TForm)
Image1: TImage;
Image2: TImage;
procedure FormCreate(Sender: TObject);
private
{ Déclarations privées }
public
{ Déclarations publiques }
procedure AlphaBlendMyPets;
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.AlphaBlendMyPets;
Var
BFunc: BLENDFUNCTION;
begin
BFunc.BlendOp := AC_SRC_OVER;
BFunc.BlendFlags := 0;
BFunc.SourceConstantAlpha := 128; // Allez, 128/255 transparence :)
BFunc.AlphaFormat := 0;
AlphaBlend(Image2.Picture.Bitmap.Handle, 0, 0, 200, 200, Image1.Picture.Bitmap.Handle, 0, 0, 200, 200, BFunc);
end;

end.

Chez moi ça marche comme ça ... essaye comme ceci ?

Cordialement, Bacterius !
0
sarssor Messages postés 63 Date d'inscription dimanche 22 juillet 2007 Statut Membre Dernière intervention 28 avril 2011
12 mars 2009 à 18:15
chez moi sa marches pas
faute est toujours ici :
<title>HTML clipboard</title>
AlphaBlend(Image2.Picture.Bitmap.Handle, 0, 0, 200, 200,
Image1.Picture.Bitmap.Handle, 0, 0, 200, 200, BFunc);

point-virgule manquant !
0
sarssor Messages postés 63 Date d'inscription dimanche 22 juillet 2007 Statut Membre Dernière intervention 28 avril 2011
12 mars 2009 à 18:16
chez moi sa marches pas
faute est toujours ici :
AlphaBlend(Image2.Picture.Bitmap.Handle, 0, 0, 200, 200, Image1.Picture.Bitmap.Handle, 0, 0, 200, 200, BFunc);

point-virgule manquant !
0
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
12 mars 2009 à 18:21
... C'est normal car le compilateur confond AlphaBlend de la fiche avec ALphaBlend de Windows.
Essaye Windows.AlphaBlend à la place de AlphaBlend ;)

Cordialement, Bacterius !
0
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
12 mars 2009 à 20:02
Bacterius à raison:
à la place de AlphaBlend(***...);
tu mets:
Windows.Alphablend(***...);
pour forcer le compilateur à prendre l'API

 
@+
Cirec

<hr siz="" />
0
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
12 mars 2009 à 20:04
J'espère que les prochaines versions de Delphi ont un compilateur plus intelligent qui décide de la fonction à utiliser selon les paramètres, et qui est capable de différencier une propriété d'une fonction ... lol

Cordialement, Bacterius !
0
sarssor Messages postés 63 Date d'inscription dimanche 22 juillet 2007 Statut Membre Dernière intervention 28 avril 2011
12 mars 2009 à 21:24
avec Windows.Alphablend(***...);
il n' ya pas des error mais sa fait rien ! Pas d'effet ? pas de différence

je préfère d'utiliser cette fonction
http://www.delphi-central.com/tutorials/AlphaBlend.aspx
Mais comment puis je d'appeler la Fonction avec un Button ?
0
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
13 mars 2009 à 19:22
Ben en fait ... c'est la même API mais enveloppée dans un code plus sécurisé que le mien (et surtout plus performant). Pour l'appeler, tu l'ajoute dans ton code et tu fais :

procedure TForm1.Button1Click(Sender: TObject);
begin
LaFonctionAlphaBlend(Paramètres);
end;

En remplacant bien sûr ...

Cordialement, Bacterius !
0
sarssor Messages postés 63 Date d'inscription dimanche 22 juillet 2007 Statut Membre Dernière intervention 28 avril 2011
14 mars 2009 à 12:14
Mon Probleme c'est le parameter
procedure DrawAlphaBlend (hWnd : HWND;  hdcwnd : HDC);


procedure TForm1.Button1Click(Sender: TObject);

begin

LaFonctionAlphaBlend(?, ?);

end;
0
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
14 mars 2009 à 15:05
tu veux absolument utiliser cette procédure ... soit !!!!




mais sache que:
 1°: elle ne fait pas ce que tu demandes, c'est juste une démo d'AlphaBlend
 2°: elle n'est pas sécurisée
 3°: une partie du code est faux et incomplet

donc pour voir ce qu'elle fait c'est simple :
procedure TForm1.Button1Click(Sender: TObject);
begin
  DrawAlphaBlend(Handle, Canvas.Handle);
End;

il manque un rectangle au centre mais c'est parce que la procédure est fausse
 
@+
Cirec

<hr siz="" />
0
sarssor Messages postés 63 Date d'inscription dimanche 22 juillet 2007 Statut Membre Dernière intervention 28 avril 2011
14 mars 2009 à 20:47
La fonction fait rien alors : (
0
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
14 mars 2009 à 21:16
ben si mais elle ne fait pas ce que tu veux.
elle explique comment utiliser AlphaBlend mais
c'est pas très claire
pas correcte
et pas sécurisé !!!
 
@+
Cirec

<hr siz="" />
0
sarssor Messages postés 63 Date d'inscription dimanche 22 juillet 2007 Statut Membre Dernière intervention 28 avril 2011
14 mars 2009 à 22:06
quelle fonction peut faire que je voudrais ?
Comme l'option "Opacity" en Photoshop
0
Rejoignez-nous