J'utilise le code ci-dessous pour rendre une icône transparente:Comment rendre un curseur transparent à Bitmap préservant le canal alpha?
private void button1_Click(object sender, EventArgs e)
{
// using LoadCursorFromFile from user32.dll
var cursor = NativeMethods.LoadCustomCursor(@"d:\Temp\Cursors\Cursors\aero_busy.ani");
// cursor -> bitmap
Bitmap bitmap = new Bitmap(48, 48, PixelFormat.Format32bppArgb);
Graphics gBitmap = Graphics.FromImage(bitmap);
cursor.DrawStretched(gBitmap, new Rectangle(0, 0, 32, 32));
// 1. Draw bitmap on a form canvas
Graphics gForm = Graphics.FromHwnd(this.Handle);
gForm.DrawImage(bitmap, 50, 50);
// 2. Draw cursor directly to a form canvas
cursor.Draw(gForm, new Rectangle(100, 50, 32, 32));
cursor.Dispose();
}
Malheureusement, je suis incapable de rendre un curseur transparent pour Bitmap! Cela fonctionne quand je dessine le Curseur directement au canevas de forme, mais il y a un problème quand je dessine le Curseur au bitmap. Tout conseil est fortement apprécié.
Oui, GDI + a des problèmes connus en préservant le canal alpha lors de l'élaboration des icônes. Peut-être que quelqu'un connaît une solution de contournement, mais je soupçonne que la meilleure façon d'aller ici est d'utiliser GDI à la place. –
Hmm ... C'est dommage, parce que je voudrais rester avec le code managé. Savez-vous, si Windows 7 utilise encore GDI, rendre les curseurs de transparence? –
semble familier. L'attribution est requise ici. Vous pourriez effectivement obtenir une meilleure réponse si vous prenez soin de cela. –