J'ai besoin d'avoir une image semi-transparente (en utilisant alpha blending) dessiné sur une forme entièrement transparente - cela signifie que l'image sera dessinée sur la forme du contenu transparent.image semi-transparente sur la forme transparente
Actuellement, l'image est toujours dessinée sur la couleur de fond de la fenêtre même si la fenêtre elle-même est transparente.
Ceci est l'état actuel, merci pour toute aide.
public Form1()
{
InitializeComponent();
SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint | ControlStyles.UserPaint, true);
MakeTransparent();
}
private void MakeTransparent()
{
NativeMethods.SetLayeredWindowAttributes(Handle, COLORREF.FromColor(BackColor), 255, Constants.ULW_ALPHA | Constants.ULW_COLORKEY);
}
protected override CreateParams CreateParams
{
get
{
CreateParams cp = base.CreateParams;
cp.Style |= (Constants.WS_EX_LAYERED | Constants.WS_EX_TOOLWINDOW);
return cp;
}
}
private void OnPaint(object sender, PaintEventArgs e)
{
using (Bitmap bitmap = new Bitmap("c:\\semi-transparent.png"))
{
e.Graphics.DrawImage(bitmap, 0, 0);
}
}
Essayez de désactiver le double tampon. – Ruud