Метод создания рабочего пространства для рисования в C # - PullRequest
0 голосов
/ 25 сентября 2019

enter image description here Я новичок в c #, пришёл из фона python / wxpython.Я все еще очень неопытен.

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

Я создал простое приложение на c #, которое позволяет рисовать квадраты на мозаичном фоне сетки .png, но я не могу понять, как настроить реальное рабочее пространство для панорамирования или масштабирования.

На этом этапе было бы неплохо сделать несколько предложений высокого уровня.

Вот мой код только к вашему сведению (будьте добры)

        public partial class MainForm : Form
    {
        bool global_draw_redbox = false;

        public MainForm()
        {
            InitializeComponent();
        }

        private void redbox(Point mousepos)
        {
            System.Drawing.Graphics graphicsObj;

            graphicsObj = CreateGraphics();

            Pen myPen = new Pen(System.Drawing.Color.Red, 3);

            Rectangle myRectangle = new Rectangle(mousepos.X - 125, mousepos.Y - 100, 250, 200);

            graphicsObj.DrawRectangle(myPen, myRectangle);

        }
        private void Form1_MouseClick(object sender, MouseEventArgs e)
        {
            var relativePoint = this.PointToClient(Cursor.Position);

            if (global_draw_redbox)
            {
                //Draw the object based on the mouse position
                redbox(relativePoint);
                //Reset the flag so we draw just one
                global_draw_redbox = false;
            }
            else
            {
                MessageBox.Show("No object selected");
            }
        }

        private void Form1_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            MessageBox.Show("Test Mouse Double Click");
        }

        private void Form1_MouseMove(object sender, MouseEventArgs e)
        {
            var relativePoint = this.PointToClient(Cursor.Position);

            XY_Mouse_Position.Text = relativePoint.ToString();
        }

        private void boxToolStripMenuItem_Click(object sender, EventArgs e)
        {
            global_draw_redbox = true;
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...