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

Область действия формы

03.05.2019, 17:41. Показов 1258. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам


Добрый день! Возникла такая проблема при работе с Windows Forms. Я написал программу, которая при нажатии на форму рисует между кликами линию (программа очень простая). У меня появляется следующая проблема: мои линии рисуются только в определенной области, хоть я и делаю клики от края формы, так как по идее область действия программы должна быть вся форма. Кто знает в чем проблема? Прошу помочь, спасибо.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.05.2019, 17:41
Ответы с готовыми решениями:

Дополнительные действия при закрытии формы
Пересмотрел кучу инфы что то все не понятно. хочу сделать так чтобы при закрытие формы у меня в БД уходило несколько значений ...

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

Выполнение некоторого действия после закрытия формы
Здравствуйте, есть проблемка. Существует первая форма MainForm, из которой я модально вызываю вторую форму GetInventoryInfoForm: ...

6
 Аватар для ashsvis
923 / 503 / 202
Регистрация: 08.10.2018
Сообщений: 1,553
Записей в блоге: 11
03.05.2019, 19:34
Цитата Сообщение от Malkin91 Посмотреть сообщение
программа очень простая
Ну так и код покажите.
0
0 / 0 / 0
Регистрация: 14.10.2017
Сообщений: 8
03.05.2019, 19:53  [ТС]
ashsvis
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
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace WindowsFormsApp2
{
    public partial class Form1 : Form
    {
        Graphics g;
        List<Point> p;
        int k = -1;
        public Form1()
        {
            g = this.CreateGraphics();
            p = new List<Point>();
            InitializeComponent();
        }
 
        private void Form1_MouseDown(object sender, MouseEventArgs e)
        {
            p.Add(new Point(e.X, e.Y));
            k++;
            if (p.Count % 2 == 0) g.DrawLine(Pens.Black, p[k - 1], p[k]);
        }
    }
}
0
 Аватар для ashsvis
923 / 503 / 202
Регистрация: 08.10.2018
Сообщений: 1,553
Записей в блоге: 11
03.05.2019, 20:12
Malkin91,
весьма странная манера рисования...
Результат рисования можно посмотреть только при следующем щелчке мыши.

Я не знаю, где вы подсмотрели этот примерчик рисования, но обычно в событии _MouseDown
запоминают точку нажатия, а в событии _MouseMove рисуют линию от точки нажатия до текущей точки курсора.
Тогда линия будет адекватно видна.
0
0 / 0 / 0
Регистрация: 14.10.2017
Сообщений: 8
03.05.2019, 20:58  [ТС]
ashsvis
в принципе ничего не поменялась, проблема осталась....
0
 Аватар для ashsvis
923 / 503 / 202
Регистрация: 08.10.2018
Сообщений: 1,553
Записей в блоге: 11
04.05.2019, 08:59
Лучший ответ Сообщение было отмечено Malkin91 как решение

Решение

Цитата Сообщение от Malkin91 Посмотреть сообщение
проблема осталась
Попробуйте сделать так:
C#
1
2
3
4
5
6
7
8
        public Form1()
        {
            //g = this.CreateGraphics();
            //p = new List<Point>();
            InitializeComponent();
            g = this.CreateGraphics();
            p = new List<Point>();
        }
1
Фрилансер
805 / 312 / 148
Регистрация: 13.02.2019
Сообщений: 1,071
04.05.2019, 11:18
Malkin91,
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
        List<Point[]> lines = new List<Point[]>();
        Point[] currentLine = new Point[2];
        bool _drawLine = false;
        public Form4()
        {
            InitializeComponent();
            SetStyle(ControlStyles.AllPaintingInWmPaint |
                ControlStyles.UserPaint |
                ControlStyles.OptimizedDoubleBuffer |
                ControlStyles.ResizeRedraw, true);
        }
        protected override void OnPaint(PaintEventArgs e)
        {
 
            base.OnPaint(e);
 
            foreach (var line in lines)
                e.Graphics.DrawLine(Pens.Blue, line[0], line[1]);
 
            if (_drawLine)
                e.Graphics.DrawLine(Pens.Blue, currentLine[0], currentLine[1]);
        }
 
        protected override void OnMouseDown(MouseEventArgs e)
        {
            base.OnMouseDown(e);
            currentLine[0] = e.Location;
            currentLine[1] = e.Location;
            _drawLine = true;
        }
        protected override void OnMouseUp(MouseEventArgs e)
        {
            base.OnMouseUp(e);
            currentLine[1] = e.Location;
            lines.Add(new Point[] { new Point(currentLine[0].X, currentLine[0].Y), 
                                       new Point(currentLine[1].X, currentLine[1].Y) });
            _drawLine = false;
        }
        protected override void OnMouseMove(MouseEventArgs e)
        {
            base.OnMouseMove(e);
            if (_drawLine)
            {
                currentLine[1] = e.Location;
                Invalidate();
            }                
        }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.05.2019, 11:18
Помогаю со студенческими работами здесь

Как можно выполнить действия при развертывании формы?
При развертывании формы нужно сделать определенные действия. Как?

Область рисования выходит меньше размеров формы
Извините за вопрос, но нигде не могу найти инфу. Подскажите как увеличить область рисования в форме, пример код: public partial...

Как сохранить область формы в виде изображения?
Привет, хотел поинтересоваться, у меня будет кнопка сохранить(см. фото), по нажатию этой кнопки, надо сделать так, чтобы определенная...

Слегка прозрачный textbox и область формы под ним
Есть текст бокс на форме, надо сделать фон слегка прозрачным, чтобы не 100% был прозрачен а на 90% И область формы под текстбоксом.

Масштабировать рабочую область PictureBox в зависимости от размеров формы
Добрый день! Который час уже не могу разобраться с этой задачей. Есть Форма - в ней picturebox, внутри которого периодически...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это дополнительная запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru