Bonjour.

Dans le cadre du développement d'un moteur graphique, je suis amené à trouver une solution pour avoir un composant transparent recouvrant ma fenètre graphique. Ce composant me permettra de dessiner des curseurs spéciaux sans altérer le contenu de la fenètre openGL.

Ainsi, je me suis intéressé à la propriété de transparence des TForm. Mais en procédant comme suit, la transparence ne semble pas fonctionner, pourquoi?

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;
 
type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Déclarations privées }
  public
    { Déclarations publiques }
    OverLayer : TForm;
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.FormCreate(Sender: TObject);
begin
  OverLayer := TForm.CreateNew(nil);
  OverLayer.Parent := Self;
  OverLayer.BorderStyle := bsNone;
  OverLayer.Color := clWhite;
  OverLayer.Show;
  OverLayer.TransparentColor := TRUE;
  OverLayer.TransparentColorValue := clWhite;
  OverLayer.AlphaBlend := TRUE;
  OverLayer.AlphaBlendValue := 0;
end;
 
end.
Merci d'avance pour votre contribution.
Cordialement,
Benjamin