Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
0 / 0 / 1
Регистрация: 22.12.2012
Сообщений: 7
1

Рисование линии как в Paint (фиксация с одного конца и следование за курсором - с другого)

23.12.2012, 20:59. Показов 2513. Ответов 1
Метки нет (Все метки)

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
private void tmImgRysownica_MouseDown(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
                tmPunkt = e.Location;
            
        }    
 
private void tmImgRysownica_MouseMove(object sender, MouseEventArgs e)
        {
                       if (e.Button == MouseButtons.Left && tmFg == 2)
            {
                    tmRysownica2.DrawLine(tmPioro, tmPunkt, e.Location);
                    tmImgRysownica.Refresh();
            };
        }
private void tmImgRysownica_MouseUp(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                    tmRysownica.DrawLine(tmPioro, tmPunkt, e.Location);
                    
                    tmImgRysownica.Refresh();
            };
Что нужно сделать чтобы линия рисовалась как в пеинте. Тоесть чтоб была анимация. Сейчас она после клика рисует много линий, я так понимаю нужно чтото вписать в раздел MouseMove, только вот уже пол дня ламаю мозги и и не могу понять что.
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.12.2012, 20:59
Ответы с готовыми решениями:

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

Добавить рисование линии мышкой, как в Paint
Программа работает но нужно добавить рисование линии мышкой как на Paint И чтоб видно как елипс...

Рисование линии на панели по поставленным курсором точкам
нужно чтобы при нажатии на панели на левую кнопку мыши под курсором появлялась точка и при нажатии...

Как переместить шарик от начала одного окна до конца другого
Приветствую всех! В Университете дали задачу создать программу,которая включает в себя: два...

1
Футболист
528 / 430 / 142
Регистрация: 31.10.2011
Сообщений: 1,008
24.12.2012, 01:20 2
Вот тебе линия много линий.. и анимация есть
Если я тебя понял, то линия - отрезок
0. Добавим в код формы пару строк
Кликните здесь для просмотра всего текста
C#
1
2
3
4
int x_MouseDown, y_MouseDown;
        bool OffOn;
        Pen myPen = new Pen(Color.Red, 3);
        List<ColoredLine> ListOfLines = new List<ColoredLine>();

1. Создаем класс ColoredLine
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class ColoredLine
    {
        public int Previous_MouseMoveXF, Previous_MouseMoveYF, Previous_MouseMoveXT, Previous_MouseMoveYT;
        public Color colorOfLine;
 
        public ColoredLine(int fx,int fy,int tx,int ty,Color _color)
        {
            Previous_MouseMoveXF = fx;
            Previous_MouseMoveYF = fy;
            Previous_MouseMoveXT = tx;
            Previous_MouseMoveYT = ty;
            colorOfLine = _color;
        }
    }

2. Создаем на форме события для мыши mouseup,mousedown,mousemove
MouseDown
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
private void Form1_MouseDown(object sender, MouseEventArgs e)
        {
            //Определяем координаты "x" и "y" указателя мыши
            //в момент нажатия кнопки мыши:
 
            x_MouseDown = e.X;
 
            y_MouseDown = e.Y;
            //Изменяем значение OffOn на противоположное:
 
            OffOn = true;
        }

MouseMove
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
private void Form1_MouseMove(object sender, MouseEventArgs e)
        {
            Graphics g = this.CreateGraphics();
 
            if (OffOn == true)
            {
                g.Clear(Color.Transparent);//clear all
 
                DrawPreviousLines();
                g.DrawLine(myPen, x_MouseDown, y_MouseDown, e.X, e.Y);//x_MouseMove, y_MouseMove);
            }
        }

MouseUp
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
private void Form1_MouseUp(object sender, MouseEventArgs e)
        {
            Graphics g = this.CreateGraphics();
            Random r = new Random();
            ListOfLines.Add( new ColoredLine(x_MouseDown, y_MouseDown, e.X, e.Y, Color.FromArgb(r.Next(255),r.Next(255),r.Next(255),r.Next(255)) ) );
            OffOn = false;
        }

3.Добавим метод для отображения линий.
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
private void DrawPreviousLines()
        {
            Graphics g = this.CreateGraphics();
            foreach (ColoredLine line in ListOfLines)
            {
                g.DrawLine(new Pen(line.colorOfLine), line.Previous_MouseMoveXF, line.Previous_MouseMoveYF, line.Previous_MouseMoveXT, line.Previous_MouseMoveYT);
            }
        }

4. Ростянем форму и сделаем фон черным(сами).
5. Робочий проэкт в прикрепленном файле
Миниатюры
Рисование линии как в Paint (фиксация с одного конца и следование за курсором - с другого)  
Вложения
Тип файла: rar Рисуем линию.rar (79.3 Кб, 60 просмотров)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.12.2012, 01:20

Следование за курсором
Неделю изучаю js, попробовал отследить движение курсора и привязать к нему положение элемента. ...

Следование за курсором
Добрый день, Вопрос таков: у меня есть элементы с классом '.select' и нужно, чтобы при нажатии на...

Следование объекта за курсором
Только начал постигать OpenGL, как наткнулся на проблему. Красная точка суть позиция курсора....

Следование объекта за курсором мыши
Надо сделать следование объектом(игроком) за курсором мыши. Сделал код для вращения объекта за...

Организовать следование объекта по форме за курсором мыши
Как организовать следование объекта по форме за курсором мыши, при чем объект должен плавно...

Линии, как в Paint-е
Добрый день. Пытаюсь реализовать прорисовку линий на панели, как в пеинте. То есть зажимаешь кнопку...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru