DrawToBitmap retornando imagem em branco

Estou com um problema ao criar uma imagem de bitmap do meu aplicativo winform.

Situação:

eu tenho umUserControl nomeado como "CanvasControl"que aceitaOnPaint método atuando como tela para meu aplicativo Draw Pad. Dentro deste controle de usuário, tenho uma função "PrintCanvas()"que criará uma imagem de tela doUserControl no arquivo PNG. Abaixo está oPrintCanvas() função:

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 controle de usuário (CanvasControl) é chamado dentro do meu formulário principal, em que o usuário desenha algo e tem a opção de salvar posteriormente usando o botão Salvar. O botão Salvar exibirá o "PrintCanvas()"função doUserControl.

Recebo o arquivo de imagem de saída conforme o esperado, mas o problema é que era uma imagem em branco.

O que eu tentei até agora:

Para testar se não é um problema de sintaxe, tentei transferir oPrintCanvas() função em minha forma principal e, surpreendentemente, recebo uma imagem de toda a forma principal em arquivo, mas oUserControl não é visível lá.

Existe alguma outra configuração que eu perdi para fazer um winformUserControl imprimível?

ATUALIZAÇÃO: (ROTINAS DE DESENHO)

Controle de usuário atuando como tela -codifique aqui

questionAnswers(1)

yourAnswerToTheQuestion