0
我需要使用WPF渲染一些幾何圖形。由於UI開銷,我不想使用形狀。我想通過drawingContext進行渲染。現在有不同的方法來達成drawingContext。據我所知,一個選擇是使用繪圖類的後代,例如Drawinggroup,請參見:WPF渲染:使用DrawingImage與DrawingVisual來獲得drawingContext
using(var context = System.Windows.Media.drawingGroup.Open())
{
context.DrawGeometry(Brushes.Blue, shapeOutlinePen, polygon);
}
有了,我可以創造一個DrawingImage,爲了顯示使用它作爲一個的ImageSource見:
var drawingImage = new DrawingImage(drawingGroup);
this.image1.Source = drawingImage;
另一種選擇是使用DrawingVisual類,像這樣:
var visual = new DrawingVisual();
using (DrawingContext context = visual.RenderOpen())
{
context.DrawGeometry(Brushes.Blue, shapeOutlinePen, polygon1);
context.DrawGeometry(Brushes.Blue, shapeOutlinePen, polygon2);
context.Close();
}
collection.Add(visual);
在這種情況下采集是使用FrameworkElement的作爲VisualCollection它的主人(父母)。這個Frameworkelement可以在用戶界面中使用,以顯示視覺效果。
現在我的問題(S):
- 是否有更多的方式來實現這一目標?
- 你如何決定走哪條路?
- Drawingimage提供DrawingVisual不提供什麼? (或者其他方式 左右)
- 這兩種方式都有哪些後果?
- 性能和/或多線程考慮如何?
Thanx爲所有您的輸入!
感謝名單我將測試此(第三)的方法!然而,仍然猶豫不決,爲什麼...... – brun0