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

Рисование линии протягиванием

04.10.2014, 17:50. Просмотров 553. Ответов 2
Метки нет (Все метки)

Всем доброго времени суток. Необходимо нарисовать линию протягиванием: лкм ставим точку, пока лкм зажат продвигаем курсор к нужной нашей точки, во время продвижения рисуется эта линия, когда лкм отпускают линия фиксируется. Что делаю не так?
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
private void MouseDown1(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                P[i].X = e.Location.X;
                P[i].Y = e.Location.Y;
                i++;
                g.DrawRectangle(bluePen, e.Location.X, e.Location.Y, 1, 1);
            }
        }
        private void MouseMove1(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                P[i].X = e.Location.X;
                P[i].Y = e.Location.Y;
                g.DrawLine(bluePen, P[i - 1].X, P[i - 1].Y, e.X, e.Y);
            }
        }
        private void MouseUp1(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
            }
        }
В моем варианте рисуется куча линий во время движения курсором.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.10.2014, 17:50
Ответы с готовыми решениями:

Рисование линии
рисование линии по щелчку выдается одна точка по второму другая и рисуется линия,почему то в...

Рисование линии
Подскажите почему у меня не рисуется линия на элементе PictureBox (mainPicture) при нажатии на...

Рисование линии и поворот
Здравствуйте. Подскажите пожалуйста, как рисовать линии (можно на форме, можно на picturebox) и...

Рисование линии в пикчабоксе
Доброго времяни суток,смотел видио урок на ютуб все сделал как у него ,у него линия рисуется в...

Рисование плавной линии
делаю Paint, мне надо сделать кисть (для начала), я сделал так: public bool move = false; ...

2
insite2012
Модератор
Эксперт .NET
4852 / 3807 / 1094
Регистрация: 12.10.2013
Сообщений: 11,096
Записей в блоге: 2
04.10.2014, 20:47 2
_Vertigo_, переделанный пример из книги Зиборова.
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
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
 
namespace WindowsFormsApplication12
{
    public partial class Form1 : Form
    {
        private bool graphFlag = false;
 
        public Form1()
        {
            InitializeComponent();
            this.MouseDown += (sender, e) =>
                {
                    if (e.Button == MouseButtons.Left)
                    {
                        graphFlag = true;
                    }
                };
            this.MouseUp += (sender, e) =>
                {
                    graphFlag = false;
 
                    if ( e.Button==MouseButtons.Right)
                    {
                        this.Refresh();
                    }
                };
            this.MouseMove += (sender, e) =>
                {
                    if (graphFlag)
                    {
                        using (Graphics g = this.CreateGraphics())
                        {
                            g.FillRectangle(new SolidBrush(Color.Black), e.X, e.Y, 5F, 5F);
                        }
                    }
                };
        }
    }
}
1
nedel
594 / 592 / 347
Регистрация: 09.04.2014
Сообщений: 1,412
Завершенные тесты: 1
05.10.2014, 13:53 3
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
List<Point[]> lines = new List<Point[]>();
        bool drawing = false;
        protected override void OnMouseDown(MouseEventArgs e)
        {
            base.OnMouseDown(e);
            if (e.Button == System.Windows.Forms.MouseButtons.Left)
            {
                lines.Add(new Point[] { e.Location, e.Location });
                drawing = true;
            }
        }
        protected override void OnMouseMove(MouseEventArgs e)
        {
            base.OnMouseMove(e);
            if (e.Button == System.Windows.Forms.MouseButtons.Left && drawing)
            {
                lines[lines.Count - 1][1] = e.Location;
                Invalidate();
            }
        }
        protected override void OnMouseUp(MouseEventArgs e)
        {
            base.OnMouseUp(e);
            drawing = false;
        }
        protected override void OnPaint(PaintEventArgs e)
        {
            base.OnPaint(e);
            foreach (var item in lines)
            {
                e.Graphics.DrawLine(Pens.Blue, item[0], item[1]);
            }
        }
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.10.2014, 13:53

Рисование прямой линии по таймеру
Требуется нарисовать по сути вот такую штуку http://savepic.org/3468491.gif . только почаще линии...

Графический редактор (рисование линии)
Всем привет, хочу написать простенький графический редактор, но вот есть некоторые проблемы, код...

Рисование линии при нажатии кнопки
Хочу сделать что б при нажатии кнопки рисовалась линия, но работает не корректно =(( Form1...


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

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

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