Я бы не назвал это простым ... но ключевым компонентом является RenderTargetBitmap, который вы можете использовать следующим образом:
RenderTargetBitmap rtb = new RenderTargetBitmap((int)control.ActualWidth, (int)control.ActualHeight, 96, 96, PixelFormats.Pbgra32);
rtb.Render(control);
Что ж, эта часть проста, теперь в RTB хранятся пиксели внутри ... но ваш следующий шаг - поместить это в полезный формат, чтобы поместить его в буфер обмена, и выяснить это может быть грязно ... Есть много классов, связанных с изображениями, которые взаимодействуют друг с другом.
Вот что мы используем для создания System.Drawing.Image, которое, я думаю, вы сможете поместить в буфер обмена.
PngBitmapEncoder png = new PngBitmapEncoder();
png.Frames.Add(BitmapFrame.Create(rtb));
MemoryStream stream = new MemoryStream();
png.Save(stream);
Image image = Image.FromStream(stream);
System.Drawing.Image (изображение формы) не может напрямую взаимодействовать с RenderTargetBitmap (класс WPF), поэтому мы используем MemoryStream для его преобразования.