Es posible trazar las líneas en un DrawingVisual derivada que tiene la propiedad protegida VisualEdgeMode establecido en EdgeMode.Aliased
:
public class MyDrawingVisual : DrawingVisual
{
public MyDrawingVisual()
{
VisualEdgeMode = EdgeMode.Aliased;
}
}
public class DrawingComponent : FrameworkElement
{
private DrawingVisual visual = new MyDrawingVisual();
public DrawingComponent()
{
AddVisualChild(visual);
using (DrawingContext dc = visual.RenderOpen())
{
dc.DrawLine(new Pen(Brushes.Black, 1d), new Point(100, 100), new Point(100, 200));
dc.DrawLine(new Pen(Brushes.Black, 1d), new Point(105.5, 100), new Point(105.5, 200));
dc.DrawLine(new Pen(Brushes.Black, 1d), new Point(112, 100), new Point(112, 200));
}
}
protected override int VisualChildrenCount
{
get { return 1; }
}
protected override Visual GetVisualChild(int index)
{
return visual;
}
}
lo suficientemente extraño, pero llamar RenderOptions.SetEdgeMode(visual, EdgeMode.Aliased)
en un DrawingVisual no derivada no hacer el trabajo.
buena pregunta, una pregunta de mi parte, y espero que le he entendido bien, por lo que eligió dibujar un gráfico, hacer todo (cada línea) usted mismo - súper impresionante, mi cabeza está abajo. Ahora lo necesitas? ¿Es posible que use una biblioteca para hacer el trabajo pesado por usted? ... a menos que, por supuesto, esté escribiendo su propio componente de gráficos. –
@denismorozov es mi propio componente de gráficos. Estoy graficando referencias de página de un administrador de memoria simulado para un proyecto escolar. Estamos investigando cómo las operaciones de memoria de diferentes algoritmos pasan por fases y probando diferentes algoritmos de reemplazo de página para minimizar las fallas de página. Es realmente divertido :) –
muy genial! Estoy pensando en jugar con mi propio control de gráficos también. ¡Buena suerte! –