У меня есть несколько функций, возвращающих объект System.Windows.Media.DrawingVisual. Мне нужно объединить весь объект DrawingVisual в одно изображение.Как объединить несколько объектов System.Windows.Media.DrawingVisual в одно изображение в WPF?
private System.Windows.Media.DrawingVisual Shape1()
{
DrawingVisual dv = new DrawingVisual();
using (DrawingContext dc = dv.RenderOpen())
{
////--- draw shapes on 'dc'
}
return dv;
}
private System.Windows.Media.DrawingVisual Shape2()
{
DrawingVisual dv = new DrawingVisual();
using (DrawingContext dc = dv.RenderOpen())
{
////--- draw shapes on 'dc'
}
return dv;
}
В моей функции мне нужно объединить возвращаемые объекты, такие как следующий
private void Combine()
{
System.Windows.Media.DrawingVisual s1 = Shape1();
System.Windows.Media.DrawingVisual s2 = Shape2();
//--- here i need to draw the s1 & s2 into an image and display on screen.
}
еще один способ есть, сохранить все DrawingVisuals в отдельный объект BitmapSource затем создать еще один DrawingVisual и сделать все растровые изображения на них. Но это очень сложный путь. Есть ли лучший способ сделать это?
Нужно ли вам использовать 'DrawingVisual'? Лучше всего, чтобы ваши методы возвращали объекты «GeometryDrawing» (или даже объекты, полученные из «Геометрии»). Объекты «GeometryDrawing» могут быть объединены с помощью «DrawingGroup», который затем может быть установлен как свойство «Drawing» для «DrawingBrush», которое, в свою очередь, может использоваться так же, как и другие кисти WPF. –
Что вы подразумеваете, комбинируя? – AnjumSKhan
Добавьте их в коллекцию 'Children' ContainerVisual (или другой DrawingVisual). Если вам нужно растровое изображение, используйте RenderTargetBitmap для отображения ContainerVisual. В противном случае создайте элемент управления Visual Host, который отобразит ContainerVisual на экране. – Clemens