我有一个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(group);
与此其他:context.DrawDrawing(MyDrawing.Drawing);
我会得到一个奇怪的效果:如果我第一次更改填充没有任何反应,而第二次填充正确更改而不改变图形的位置。
我能怎么做?