Ресурсоемко - возможно, если не очищать память после конвертации с помощью WinApi.
img - Bitmap
var img = new Bitmap(pictureSize.Width, pictureSize.Height);
Graphics g = Graphics.FromImage(img);
//
// Здесь ваше рисование с использованием объекта g
//
g.Dispose();
IntPtr hBitmap = img.GetHbitmap();
BitmapSource src;
try
{
src = Imaging.CreateBitmapSourceFromHBitmap(hBitmap,
IntPtr.Zero,
Int32Rect.Empty,
BitmapSizeOptions.
FromEmptyOptions());
src.Freeze();
}
finally
{
DeleteObject(hBitmap);
}
return src;
[DllImport("gdi32.dll")]
public static extern bool DeleteObject(IntPtr hObject);