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);
}
}
}
}
しかし、この方法では、(MyDrawing に) 変換が適用されていないかのように、私の DrawingVisual が別の位置に描画されることがあります。
また、この命令を変更すると、次のようになります: 奇妙な効果が得られますcontext.DrawDrawing(group);
: context.DrawDrawing(MyDrawing.Drawing);
Fill を変更すると、最初は何も起こりませんが、2 回目は Figure の位置を変更せずに Fill が正しく変更されます。
どのようにできるのか?