Да, используйте Bitmap
для каждого "слоя" и отрисовывайте каждое растровое изображение на панели.
Вы можете контролировать, какой "слой" находится сверху, вызывая DrawImage
вконкретный заказ.
Например:
private void panel1_Paint(object sender, PaintEventArgs e)
{
Bitmap bmp1 = new Bitmap(panel1.Width, panel1.Height);
Bitmap bmp2 = new Bitmap(panel1.Width, panel1.Height);
Graphics g1 = Graphics.FromImage(bmp1);
Graphics g2 = Graphics.FromImage(bmp2);
g1.FillRectangle(Brushes.Red, 10, 10, 100, 100);
g2.FillEllipse(Brushes.Blue, 20, 20, 100, 100);
e.Graphics.DrawImage(bmp1, 0, 0);
e.Graphics.DrawImage(bmp2, 0, 0);
}