Member 13594414 Ответов: 1

Измените размер прямоугольников


Я рисую несколько прямоугольников на изображении picturebox . я хочу изменить размер всех прямоугольников с помощью мыши в c# . Кто-нибудь может мне помочь .. Спасибо

Что я уже пробовал:

public List<rectangle> listRec = new List<rectangle>();
Graphics g;
//private Graphics g;
Point startPos;
Point currentPos;
bool drawing;
Rectangle r1;
Rectangle rect = new Rectangle();

private Rectangle getRectangle()
{
    r1 = new Rectangle(
        Math.Min(startPos.X, currentPos.X),
        Math.Min(startPos.Y, currentPos.Y),
        Math.Abs(startPos.X - currentPos.X),
        Math.Abs(startPos.Y - currentPos.Y));
    return r1;
}

private void button1_Click(object sender, EventArgs e)
{
    String data;

    Font font = new Font("Arial", 14);
    arg1 = Convert.ToInt32(textBox1.Text);
    arg2 = Convert.ToInt32(textBox2.Text);
    Rectangle rect = new Rectangle();
    rect.Size = new Size(40, 65);
    for (int x = 0; x < arg1; x++)
    {
        // rect.X = x * rect.Width;
        rect.X = x * (rect.Width + 30) + 73;
        for (int y = 0; y < arg2; y++)
        {
            rect.Y = y * (rect.Height + 35) + 38;
            listRec.Add(rect);
            data = rect.ToString();
            TextWriter txt = new StreamWriter("E:\\B1Pockets.txt", true);
            txt.WriteLine(data);
            txt.Close();
            // MessageBox.Show(rect.ToString());
        }
    }

    foreach (Rectangle rec in listRec)
    {
        g = pictureBox1.CreateGraphics();
        Pen p = new Pen(Color.Red, 3);
        g.DrawRectangle(p, rec);
        g.DrawString("p1", font, new SolidBrush(Color.Yellow), (rect.Width + 30), 35);
        g.DrawString("p2", font, new SolidBrush(Color.Yellow), (rect.Width + 40) + 60, 35);
        g.DrawString("p3", font, new SolidBrush(Color.Yellow), (rect.Width + 40) + 130, 35);
        g.DrawString("p4", font, new SolidBrush(Color.Yellow), (rect.Width + 30), (rect.Height + 30) + 40);
        g.DrawString("p5", font, new SolidBrush(Color.Yellow), (rect.Width + 40) + 60, (rect.Height + 30) + 40);
        g.DrawString("p6", font, new SolidBrush(Color.Yellow), (rect.Width + 40) + 130, (rect.Height + 30) + 40);
    }
}


Я пробовал этот код .

BillWoodruff

Да, вы можете это сделать, но вам нужно уточнить, что меняет размер ... коробка с картинками ? И как изменяется размер элемента управления whatever во время выполнения: путем ввода чисел в текстовые поля ? путем прямого действия мышкой.

1 Ответов

Рейтинг:
2

Richard MacCutchan

Вам нужно захватить кнопку мыши вниз, переместить мышь и кнопку мыши вверх уведомления. При каждом перемещении вы сохраняете координаты x и y, а затем, когда мышь отпущена, вы можете перерисовать прямоугольник, используя новые координаты.

Видеть Уведомления О Вводе Мыши (Windows)[^]