The obvious candidate for having the EdgeMode set to Aliased is the DrawingVisual, but setting it seemed to make no difference:
// This had no effect!
RenderOptions.SetEdgeMode(dv, EdgeMode.Aliased);
DrawingVisual has a protected property VisualEdgeMode, which presumably should have been set by calling the above. During debugging, I put a watch on the property and found it was not being set!
As it's a protected property you cannot set it directly, but you can create a subclass and do it that way. In the end, this is what worked for me:
class DrawingVisualAliased : DrawingVisual
{
public DrawingVisualAliased() : base()
{
VisualEdgeMode = EdgeMode.Aliased;
}
}
Not sure if this is the best way. It seems like the property should be set by calling RenderOptions.SetEdgeMode, so maybe there's something else not quite right.
Thanks to @Rekshino for pushing me to create an example. It certainly helped to be able to work on a very simplified version of the problem, with a clear visual representation of it.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…