C #, Как установить позицию курсора вручную - PullRequest
0 голосов
/ 20 мая 2018

Я выполнил часть «Получить координаты», и мне нужно сделать часть «Задать», где я могу ввести координаты вручную и нажать кнопку «Задать», чтобы появился «Синий круг» с координатами, которые яввели в textBox2 на pictureBox1.Этот код для "Получить":

    int mouseX, mouseY;
    Pen bluePen = new Pen(Color.Blue, 1);
    private void pictureBox1_MouseClick(object sender, MouseEventArgs e)
    {
        textBox1.Text = "X = " + e.X + " ; Y = " + e.Y;
    }
    private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
    {
        mouseX = e.X;
        mouseY = e.Y;
        pictureBox1.Refresh();
    }
    private void pictureBox1_Paint(object sender, PaintEventArgs e)
    {
        Rectangle circle = new Rectangle(mouseX - 8, mouseY - 8, 16, 16);
        e.Graphics.DrawEllipse(bluePen, circle);
    }

The form

Ответы [ 2 ]

0 голосов
/ 20 мая 2018

добавить метод обработки события нажатия кнопки «ButtonSet_Click» к кнопке «установить».

    private void ButtonSet_Click(object sender, EventArgs e)
    {                    
        Point p = getXYfromTextBox();
        Rectangle circle = new Rectangle(p.X - 8, p.Y - 8, 16, 16);
        Graphics g = pictureBox1.CreateGraphics();
        g.DrawEllipse(redPen, circle);
    }

    //this method can be optimized
    private Point getXYfromTextBox()
    {
        string xy = textBox2.Text.Trim();
        string[] xys = xy.Split(';');
        mouseX = Convert.ToInt32(xys[0].Split('=')[1].Trim());
        mouseY = Convert.ToInt32(xys[1].Split('=')[1].Trim());
        Point p = new Point(mouseX, mouseY);
        return p;
    }
0 голосов
/ 20 мая 2018

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

private void btnSet_Click(object sender, EventArgs e)
{
    string input = tbInput.Text.Trim(); 
    string[] parts = input.Split(",".ToCharArray()); //assume your coordinates are commas-separated, like "80,100"
    if (parts.Length == 2)
    {
        mouseX = int.Parse(parts[0]);
        mouseY = int.Parse(parts[1]);
        pictureBox1.Refresh(); //Now force picturebox to repaint
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...