Je suis en train de et deux bitmaps comme celui-ci:et deux bitmaps en C#
[DllImport("gdi32.dll")] public static extern int SetROP2(IntPtr hDC, int nDrawMode); const int SRCAND = 0x008800C6; // AND raster op. lock (g.Clip) { IntPtr pDC = g.GetHdc(); SetROP2 (pDC, SRCAND); g.DrawImageUnscaled (currentBitmap, bound.Location); g.ReleaseHdc (pDC); }
Mais je reçois une exception « objet est actuellement utilisé ailleurs » de la déclaration de tirage au sort. Déplacer l'instruction ReleaseHdc avant que l'instruction Draw s'exécute, mais n'utilise pas l'opérande raster spécifiée. L'approche LockBits est trop lente, car elle copie l'intégralité du bitmap deux fois, l'une des bitmaps est énorme, et cela doit se produire plusieurs fois par seconde.
Des idées pour tromper .NET dans les bitmaps ANDing?
Je l'ai utilisé le même objet de verrouillage pour les deux endroits qui peuvent attirer, mais je me fais toujours la même erreur. Cela fonctionne si je sors l'appel SetROP2. Si le problème était plusieurs threads utilisant le même bitmap ou objet graphique, le problème ne resterait-il pas? – user20493
Trouvé une solution: Utiliser une couleur transparente pour l'arrière-plan bitmap donne le même effet dans ce cas. Merci pour la suggestion Hans. – user20493