Ejemplo n.º 1
0
        /// <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)
            });
        }
Ejemplo n.º 2
0
 /// <summary>
 /// Проверка на равенство двух узлов
 /// </summary>
 /// <param name="n">Проверяемый узел</param>
 /// <returns>True, если проверяемый равен текущему</returns>
 public Boolean Equals(Node n)
 {
     return _id == n.Id;
 }
Ejemplo n.º 3
0
        /// <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);
        }