public void Draw(Graphics g)
{
g.FillRectangle(SystemBrushes.AppWorkspace, Bounds);
g.DrawRectangle(Pens.Black, mCanvasMarginWidth - 1, mCanvasMarginHeight - 1, 800 + 1, 600 + 1);
g.TranslateTransform(mCanvasMarginWidth, mCanvasMarginHeight);
GraphicsContainer containerState = g.BeginContainer();
g.SmoothingMode = SmoothingMode.HighQuality;
DrawCanvas(g);
g.SmoothingMode = SmoothingMode.Default;
g.EndContainer(containerState);
g.TranslateTransform(-mCanvasMarginWidth, -mCanvasMarginHeight);
//mCanvasBufferGraphics.FillRectangle(SystemBrushes.AppWorkspace, Bounds);
//mCanvasBufferGraphics.DrawRectangle(Pens.Black, mCanvasMarginWidth - 1, mCanvasMarginHeight - 1, 800 + 1, 600 + 1);
//DrawCanvas(mCanvasBufferGraphics);
//Rectangle src = Bounds;
//Rectangle dest = new Rectangle(0, 0, (int)(Bounds.Width * mScale), (int)(Bounds.Height * mScale));
//dest.X = (Bounds.Width / 2) - (dest.Width / 2);
//dest.Y = (Bounds.Height / 2) - (dest.Height / 2);
//g.DrawImage(mCanvasBufferImage, dest, src, GraphicsUnit.Pixel);
}