我可以帮助您翻译中文。以下是需要翻译的内容:
但这样可能会导致我的DrawingVisual被绘制到不同的位置,就好像变换没有被应用一样(对于MyDrawing)。
此外,如果我将这个指令改成:context.DrawDrawing(MyDrawing.Drawing); 就会出现奇怪的效果:第一次更改填充时什么也不会发生,而第二次更改填充时图形的位置不会改变,但填充会正确地改变。
我该怎么做?
我有一个 DrawingVisual 对象,我想更改它的填充和描边。
对于填充,我尝试了这个方法:
DrawingVisual MyDrawing = new DrawingVisual();
SetFill(Brushes.Red, MyDrawing.Drawing);
SetFill是什么:
private void SetFill(Brush fill, DrawingGroup group)
{
foreach (Drawing drw in group.Children)
{
if (drw is DrawingGroup)
SetFill(fill, drw as DrawingGroup);
else if (drw is GeometryDrawing)
{
GeometryDrawing geo = drw as GeometryDrawing;
geo.Brush = fill;
using (DrawingContext context = MyDrawing.RenderOpen())
{
context.DrawDrawing(group);
}
}
}
}
但这样可能会导致我的DrawingVisual被绘制到不同的位置,就好像变换没有被应用一样(对于MyDrawing)。
此外,如果我将这个指令改成:context.DrawDrawing(MyDrawing.Drawing); 就会出现奇怪的效果:第一次更改填充时什么也不会发生,而第二次更改填充时图形的位置不会改变,但填充会正确地改变。
我该怎么做?
GeometryDrawing.Brush
,而不需要重新绘制吗? - ClemensSetFillEx
时,您都会将一个现有的DrawingGroup放入新的DrawingGroup的Children集合中。 - Clemens