En fait, je l'ai mis en place une classe pour gérer l'envoi de messages WM_SETREDRAW comme ceci:C# - dessin de verrouillage
public static class DrawingLocker
{
[DllImport("user32", CharSet = CharSet.Auto)]
private extern static IntPtr SendMessage(IntPtr hWnd,
int msg, int wParam, IntPtr lParam);
private const int WM_SETREDRAW = 11; //0xB
public static void LockDrawing(IntPtr Handle)
{
SendMessage(Handle, WM_SETREDRAW, 0, IntPtr.Zero);
}
public static void UnlockDrawing(IntPtr Handle)
{
SendMessage(Handle, WM_SETREDRAW, 1, IntPtr.Zero);
}
}
J'ai ensuite une méthode Redessiner dans mon contrôle utilisateur personnalisé:
public void Redraw()
{
try
{
DrawingLocker.LockDrawing(Handle);
using (Graphics graphics = Graphics.FromHwnd(Handle))
{
//Draw Stuff
}
}
finally { DrawingLocker.UnlockDrawing(Handle); }
}
Mon Le problème est que je ne dessine rien où le commentaire "Draw Stuff" est tiré. Qu'est-ce que je fais mal? Redémarrage est appelé lorsque les valeurs qui modifient le dessin, y compris le redimensionnement)
... pourquoi utilisez-vous ce drapeau en premier lieu? –
Arrêtez de scintiller en dessinant, s'il y a une meilleure façon que j'ai manquée, n'hésitez pas à l'afficher comme réponse. – Blam