木を描こうとしていますが、「枝」が重ならないようにする方法が見つかりません。素晴らしいアイデアを提供するために、以前にこれを行った人が必要です。私はいくつかの方法を試してみましたが、うまくいきませんでした (または、使い方が不十分でした)。
これは、ツリーを描画するために使用しているコードです:
public void drawNode(Graphics g, Node node, float x, float y)
{
Font sFont = new Font("Helvetica",13);
if (node.Left == null && node.Right == null)
{
g.DrawLine(Pens.Black, x, y, x, y + 20);
g.DrawString(node.litera.ToString(), sFont, Brushes.Blue, x, y + 25);
}
else
{
if (node.Left != null)
{
g.DrawLine(Pens.Black, x, y, x - 20, y + 20);
drawNode(g, node.Left, x - 20, y + 20);
}
if (node.Right != null)
{
g.DrawLine(Pens.Black, x, y, x + 20, y + 20);
drawNode(g, node.Right, x + 20, y + 20);
}
}
}
オーバーラップの問題を除いて、すべてが正しく描画されます。