/// <summary> /// Отрисовка рамки узла /// </summary> /// <param name="node">Отображаемый узел</param> /// <param name="e">Аргументы событий рисования</param> public static void DrawNodeFrame(Node node, PaintEventArgs e) { int width = _NODE_X_OFFSET * 2 + 8; int height = _NODE_Y_OFFSET * 2 + 8; int x = node.Location.X - _NODE_X_OFFSET - 4; int y = node.Location.Y - _NODE_Y_OFFSET - 4; int piece = 5; // Отрисовать левую часть рамки e.Graphics.DrawLines(NodeFramePen, new Point[] { new Point(x + piece, y + height), new Point(x, y + height), new Point(x, y), new Point(x + piece, y) }); // Отрисовать правую часть рамки e.Graphics.DrawLines(NodeFramePen, new Point[] { new Point(x + width - piece, y + height), new Point(x + width, y + height), new Point(x + width, y), new Point(x + width - piece, y) }); }
/// <summary> /// Проверка на равенство двух узлов /// </summary> /// <param name="n">Проверяемый узел</param> /// <returns>True, если проверяемый равен текущему</returns> public Boolean Equals(Node n) { return _id == n.Id; }
/// <summary> /// Отрисовка узла /// </summary> /// <param name="node">Отображаемый узел</param> /// <param name="e">Аргументы событий рисования</param> public static void DrawNode(Node node, PaintEventArgs e) { // Отрисовка картинки e.Graphics.DrawImage(node.Image, new Point(node.Location.X - NodeXOffset, node.Location.Y - NodeYOffset)); Size txtSz = GetTextSize(_DEF_FONT, node.Docket); Rectangle backRect = new Rectangle(new Point(node.Location.X - txtSz.Width / 2, node.Location.Y - NodeYOffset - 18), txtSz); // Отрисовка фона надписи e.Graphics.FillRectangle(Brushes.White, backRect); StringFormat sf = new StringFormat(); sf.Alignment = StringAlignment.Center; // Отрисовка текста надписи e.Graphics.DrawString(node.Docket, _DEF_FONT, Brushes.Black, new Point(node.Location.X, node.Location.Y - NodeYOffset - 18), sf); }