C# Создание выбираемых прямоугольников с уникальными именами

Я работаю над небольшой диаграммой в Winforms. В настоящее время мне удалось создать массив прямоугольников, но я просто не уверен, как реализовать их, чтобы они были выбраны с помощью щелчка мыши и были в состоянии показать свойства (то есть, как имя) каждого отдельного прямоугольника.

Это то, что у меня есть сейчас.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace NodeGraph
{
    public partial class NodeGraphPanel : UserControl
    {
        Point cursorPoint;
        Rectangle[] NodeRectange = new Rectangle[1];
        public string name;
        int id = 0;

        public NodeGraphPanel()
        {
            InitializeComponent();
        }

        public void DrawText()
        {
            cursorPoint = PointToClient(Cursor.Position);
            for(int i = 0; i < NodeRectange.Length; i++)
            {

                NodeRectange[i] = new Rectangle();
                NodeRectange[i].Size = new Size(200, 100);
                NodeRectange[i].Location = cursorPoint;
                name = "NodeRectange" + id;
                id++;

                Pen pen = new Pen(Color.Black, 2);
                pen.Alignment = PenAlignment.Center;

                Graphics g;
                g = this.CreateGraphics();

                SolidBrush myBrush = new SolidBrush(Color.FromArgb(0, 174, 219));
                SolidBrush myBrush2 = new SolidBrush(Color.FromArgb(85, 85, 85));

                using (Font font1 = new Font("Arial", 12, FontStyle.Bold, GraphicsUnit.Point))
                {
                    g.DrawString(name, font1, Brushes.Black, NodeRectange[i].X,NodeRectange[i].Y);
                    g.DrawRectangle(pen, NodeRectange[i]);
                    g.FillRectangle(myBrush, NodeRectange[i]);
                    g.FillRectangle(myBrush2, new Rectangle(cursorPoint.X, cursorPoint.Y, 200, 30));

                    g.Dispose();
                    myBrush.Dispose();
                }
                label1.Text = name;

            }

        }
    }
}

Я попробовал показанный пример Line, и это сработало. Но я изменил его на класс Rectangle и пересоздал его, чтобы он соответствовал методу Rectangle. При запуске у меня нет ошибок, но не рисует. Вот код:

class Rectangle
{

    public Point LocX { get; set; }
    public Point LocY { get; set; }
    public int Width { get; set; }
    public int Height { get; set; }

    public Rectangle(Point x, Point y, int v1, int v2)
    {
        LocX = x; LocY = y; Width = v1; Height = v2;
    }

    public void Draw(Graphics G)
    { using (Brush brush = new SolidBrush(Color.AliceBlue)) G.FillRectangle(brush, LocX.X,LocY.Y,Width,Height); }
}

И это то, что я использую для запуска:

List<Rectangle> rectangles = new List<Rectangle>();

rectangles.Add(new Rectangle(new Point(cursorPoint.X), new Point(cursorPoint.Y),100,50));

0 ответов

Другие вопросы по тегам