DrawToBitmap que devuelve una imagen en blanco

Tengo un problema al crear una imagen de mapa de bits a partir de mi aplicación winform.

Situación:

tengo unUserControl nombrado como "CanvasControl"que aceptaOnPaint método que actúa como lienzo para mi aplicación Draw Pad. Dentro de este control de usuario tengo una función "PrintCanvas()"que creará una imagen de captura de pantalla delUserControl en archivo PNG. abajo esta elPrintCanvas() función:

public void PrintCanvas(string filename = "sample.png")
{
    Graphics g = this.CreateGraphics();
    //new bitmap object to save the image        
    Bitmap bmp = new Bitmap(this.Width, this.Height);
    //Drawing control to the bitmap        
    this.DrawToBitmap(bmp, new Rectangle(0, 0, this.Width, this.Height));
    bmp.Save(Application.StartupPath + 
        @"\ExperimentFiles\Experiment1" + filename, ImageFormat.Png);
    bmp.Dispose();
}

Este control de usuario (CanvasControl) se llama dentro de mi formulario principal donde el usuario dibujará algo y tendrá la opción de guardar luego usando un botón de guardar. El botón Guardar mostrará el "PrintCanvas()"función de laUserControl.

Obtengo el archivo de imagen de salida como se esperaba, pero el problema es que era una imagen en blanco.

Lo que he probado hasta ahora:

Para probar que no es un problema de sintaxis, intenté transferir elPrintCanvas() funciono en mi formulario principal y sorprendentemente obtengo una imagen del formulario principal completo en el archivo, pero elUserControl No es visible allí.

¿Hay alguna otra configuración que me perdí para hacer una forma de ganarUserControl ¿imprimible?

ACTUALIZACIÓN: (RUTINAS DE DIBUJO)

Control de usuario que actúa como lienzo -codigo aqui

Respuestas a la pregunta(1)

Su respuesta a la pregunta