I know this question is older but I also had to get a bitmap from the ink canvas. So to answer the question on how to get a bitmap directly from the ink canvas, here is a solution. hope it still helps.
private System.Drawing.Image ConvertInkCanvasToImage()
{
//create temporary InkCanvas or send it in as a parameter
InkCanvas inkCanvas = new InkCanvas();
inkCanvas = viewModel.InkCanvas;
//render bitmap
RenderTargetBitmap rtb = new RenderTargetBitmap((int)inkCanvas.ActualWidth, (int)inkCanvas.ActualHeight, 96, 96, System.Windows.Media.PixelFormats.Default);
rtb.Render(inkCanvas);
BmpBitmapEncoder encoder = new BmpBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(rtb));
rtb.Render(inkCanvas);
//save to memory stream or file
System.IO.MemoryStream ms = new System.IO.MemoryStream();
encoder.Save(ms);
//creat bitmap with memory stream or file
Bitmap bitmap = new Bitmap(ms);
return bitmap;
}