Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/26: Рейтинг темы: голосов - 26, средняя оценка - 4.69
2 / 2 / 2
Регистрация: 04.10.2012
Сообщений: 277

Рисование линии

16.01.2013, 20:23. Показов 5152. Ответов 5

Студворк — интернет-сервис помощи студентам
Подскажите почему у меня не рисуется линия на элементе PictureBox (mainPicture) при нажатии на левую кнопку курсор ничего не рисует?
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
private void mainPicture_MouseMove(object sender, MouseEventArgs e)
        {
            //если можем рисовать...
            if (bCanDraw)
            {
                //проверяем - зажата ли левая кнопка мыши
                if (e.Button == MouseButtons.Left)
                {
                    //рисуем линию от последней (lastX,lastY) точки
                    //до текущей (e.X,e.Y)
 
                    gr.DrawLine(Pens.Black,lastX, lastY, e.X, e.Y);
                    //обновляем координаты lastX и lastY
                    lastX = e.X;
                    lastY = e.Y;
                    //вызываем метод Refresh, который перерисовывает
                    //содержимое PictureBox-а, отображая внесённые измененния
                    mainPicture.Refresh();
                }
                else
                { //если кнопка отпущена - запрещаем рисование
                    bCanDraw = false;
                }
            }
        }
        private void mainPicture_MouseDown(object sender, MouseEventArgs e)
        {
            //если нажата левая кнопка мыши
            if (e.Button == MouseButtons.Left)
            {
                //разрешаем рисование
                bCanDraw = true;
                //сохраняем текущие координаты
                lastX = e.X;
                lastY = e.Y;
            }
        }
    }
}
Добавлено через 11 минут
Цитата Сообщение от Dant-90 Посмотреть сообщение
Подскажите почему у меня не рисуется линия на элементе PictureBox (mainPicture) при нажатии на левую кнопку курсор ничего не рисует?
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
private void mainPicture_MouseMove(object sender, MouseEventArgs e)
        {
            //если можем рисовать...
            if (bCanDraw)
            {
                //проверяем - зажата ли левая кнопка мыши
                if (e.Button == MouseButtons.Left)
                {
                    //рисуем линию от последней (lastX,lastY) точки
                    //до текущей (e.X,e.Y)
 
                    gr.DrawLine(Pens.Black,lastX, lastY, e.X, e.Y);
                    //обновляем координаты lastX и lastY
                    lastX = e.X;
                    lastY = e.Y;
                    //вызываем метод Refresh, который перерисовывает
                    //содержимое PictureBox-а, отображая внесённые измененния
                    mainPicture.Refresh();
                }
                else
                { //если кнопка отпущена - запрещаем рисование
                    bCanDraw = false;
                }
            }
        }
        private void mainPicture_MouseDown(object sender, MouseEventArgs e)
        {
            //если нажата левая кнопка мыши
            if (e.Button == MouseButtons.Left)
            {
                //разрешаем рисование
                bCanDraw = true;
                //сохраняем текущие координаты
                lastX = e.X;
                lastY = e.Y;
            }
        }
    }
}
Пробовал изменить gr.DrawLine(Pens.Black,lastX, lastY, e.X, e.Y); на
C#
1
2
 Pen myPen = new Pen(Color.Green, 2);
                    gr.DrawLine(myPen, lastX, lastY, e.X, e.Y);
и все равно не рисует
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.01.2013, 20:23
Ответы с готовыми решениями:

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

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

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

5
14 / 14 / 4
Регистрация: 31.12.2012
Сообщений: 71
16.01.2013, 20:28
C#
1
mainPicture.Refresh();
Поставь перед рисованием линии
1
2 / 2 / 2
Регистрация: 04.10.2012
Сообщений: 277
16.01.2013, 20:33  [ТС]
Цитата Сообщение от Lirik5 Посмотреть сообщение
C#
1
mainPicture.Refresh();
Поставь перед рисованием линии
у меня же mainPicture.Refresh() есть в коде!

Добавлено через 2 минуты
может в настройках элемента что-нибудь поменять нужно?
0
14 / 14 / 4
Регистрация: 31.12.2012
Сообщений: 71
16.01.2013, 20:36
В том и ошибка, ты нарисовал и обновил(стер), а надо обновить и нарисовать.
0
2 / 2 / 2
Регистрация: 04.10.2012
Сообщений: 277
16.01.2013, 20:39  [ТС]
Цитата Сообщение от Lirik5 Посмотреть сообщение
В том и ошибка, ты нарисовал и обновил(стер), а надо обновить и нарисовать.
Странно но почему то все-равно не рисует((
0
Футболист
 Аватар для Goal
533 / 435 / 142
Регистрация: 31.10.2011
Сообщений: 1,010
16.01.2013, 22:15
когда то для наших форумчан наших делал, мб пригодиться...
запоминает и рисует линии)

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
59
60
61
62
63
64
65
66
67
68
69
70
71
public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        int x_MouseDown, y_MouseDown;
        bool OffOn;
        Pen myPen = new Pen(Color.Red, 3);
        List<ColoredLine> ListOfLines = new List<ColoredLine>();
        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);
            }
        }
 
        private void Form1_MouseDown(object sender, MouseEventArgs e)
        {
            //Определяем координаты "x" и "y" указателя мыши
            //в момент нажатия кнопки мыши:
 
            x_MouseDown = e.X;
 
            y_MouseDown = e.Y;
            //Изменяем значение OffOn на противоположное:
 
            OffOn = true;
        }
 
        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;
        }
 
        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);
            }
        }
 
        
 
    }
 
    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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.01.2013, 22:15
Помогаю со студенческими работами здесь

Рисование линии по координатам X Y
добрый день. я новичек в программировании. Уже как неделю пытаюсь решить задачу . но ничего не получается ( У меня есть координаты X...

Рисование линии протягиванием
Всем доброго времени суток. Необходимо нарисовать линию протягиванием: лкм ставим точку, пока лкм зажат продвигаем курсор к нужной нашей...

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

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

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


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru