Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# Windows Forms
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
wep6ak
19 / 19 / 1
Регистрация: 08.03.2011
Сообщений: 110
1

Рисование прямоугольника получается только если вести курсор в правый нижний угол

05.12.2011, 19:08. Просмотров 1189. Ответов 3
Метки нет (Все метки)

Пытаюсь сделать программу, которая рисует прямоугольники. Но столкнулся с проблемой: прямоугольник рисуется только вперед и вниз, т.е. если нажать мышкой по форме и вести ее в правый нижний угол, то всё нормально рисуется, но если вести ее в левый верхний угол формы - не рисуется. Если заменить DrawRectangle на DrawEllips, то эллипсы рисуются отлично. Как доработать рисование прямоугольника ?

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
namespace WnFrmAppRect
{
    public partial class Form1 : Form
    {
        int x;
        int y;
        int w;
        int h;
        Pen MyPen = new Pen(Color.Black, 1);
        //List<Rectangle> r1 = new List<Rectangle>();
 
        public Form1()
        {
            InitializeComponent();
        }
 
        private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                if (x == 0 || y == 0)
                {
                    x = e.X;
                    y = e.Y;
                }
                else
                {
                    w = e.X - x;
                    h = e.Y - y;
                }
                pictureBox1.Refresh();
            }
        }
 
        private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
        {
            Graphics g = pictureBox1.CreateGraphics();
            g.DrawRectangle(MyPen, x, y, w, h);
            g.Save();
            //r1.Add(new Rectangle(x, y, w, h));
            x = 0;
            y = 0;
            w = 0;
            h = 0;
        }
 
        private void pictureBox1_Paint(object sender, PaintEventArgs e)
        {
            e.Graphics.DrawRectangle(MyPen, x, y, w, h);
            e.Graphics.Save();
 
            /*for (int i = 0; i < r1.Count; i++)
            {
                e.Graphics.DrawRectangle(MyPen, r1[i]);
            }*/
        }
    }
}
P.S. в комментариях я добавил команды, благодаря которым прямоугольники сохраняются на форме, а не исчезают при рисовании нового прямоугольника. Можно ли это сделать каким-то другим способом ?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.12.2011, 19:08
Ответы с готовыми решениями:

Рисование кистью: если движение мышки быстрое, то линия получается с пробелами
Осваиваю рисование в С#, проблема с рисованием кистью. Вот пишу программу, всё...

Минимальное нахождение пути из верхнего левого угла в правый нижний
Помогите решить задачу на C# Windows Forms Произошло радиоактивное...

Если сумма сгенерированных чисел – положительная, то числа выводятся в левый ListBox. Если отрицательная – в правый
Разработать Windows Forms приложение, содержащее 2 объекта ListBox и кнопку. По...

Рисование прямоугольника
Не получается нарисовать прямоугольник на pictureBox, чтобы можно было изменять...

Рисование прямоугольника
Здравствуйте! Нам в институте выдали задание, чтобы написали программу в...

3
temich-92
c#
90 / 90 / 27
Регистрация: 25.03.2011
Сообщений: 290
06.12.2011, 01:02 2
запоминай координаты нажатия) отсюда и пляши

Добавлено через 15 минут
а чтобы запоминать нарисованное..можно в bitmap рисовать(помоему)..и это наверняка будет лучше если пишешь графический редактор
0
BlackVoiN69
0 / 0 / 0
Регистрация: 19.10.2012
Сообщений: 24
19.10.2012, 23:02 3
а как рисовать в Bitmap'е подскажите пожалуйста?
0
StarDen
5 / 5 / 0
Регистрация: 21.10.2012
Сообщений: 101
22.10.2012, 18:24 4
у меня тоже есть лаб. работа с аналогичной проблемой, вся суть в отнимании координат - когда ведешь справа в левый нижний угол, выходит что координаты при отнимании идут в минус, а как тогда будет рисоваться прямоугольник? - никак, вот проект, может поможет
0
Вложения
Тип файла: rar Rectangle.rar (42.8 Кб, 25 просмотров)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.10.2012, 18:24

Рисование прямоугольника на picturebox
На форме находится picturebox, на котором нужно нарисовать прямоугольник. В...

Масштабирование прямоугольника, который повернут на некоторый угол
Доброго времени суток! Я столкнулась с проблемой масштабирования...

Рисование прямоугольника методом перетаскивания
Доброго времени суток. Подскажите как создать прямоугольник, рисующийся по...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru