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

Нарисованное стирается при сворачивании формы и при изменении ее размеров

08.10.2014, 17:40. Показов 1754. Ответов 4
Метки нет (Все метки)

Здравствуйте, пишу программу, которая рисует линию. Будьте добры, помогите с событием Paint, которое должно перерисовывать линии, если форму свернули,уменьшили и тд. В моем случае оно перерисовывает, но соединяет лишние точки
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
72
73
74
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
 
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        int count = 0;
        Color c1 = Color.Blue;
        int[,] mas = new int[2, 1000];
        bool f1 = false;
        int q, w;
        private void Form1_MouseDown(object sender, MouseEventArgs e)
        {
  Graphics gr = CreateGraphics();
               gr.DrawLine(new Pen(c1, 2), e.X, e.Y-1, e.X, e.Y);
              mas[0, count] = e.X;
              mas[1, count] = e.Y;
                count++;
                f1 = true;
                gr.Dispose();
                q = e.X;
                w = e.Y;
        }
 
        private void Form1_MouseMove(object sender, MouseEventArgs e)
        {
             Graphics gr = CreateGraphics();
         if (f1 == true)
         {
             gr.DrawLine(new Pen(c1, 2), q,w, e.X, e.Y);
            mas[0, count] = e.X;
             mas[1, count] = e.Y;
             count++;
            q = e.X;
             w = e.Y;
         }
         gr.Dispose();
        }
 
        private void Form1_MouseUp(object sender, MouseEventArgs e)
        {
f1 = false;
        }
 
        private void Form1_Paint(object sender, PaintEventArgs e)
        {
  Graphics gr = CreateGraphics();
            for (int i = 0; i < count; i++)
            {
                    gr.DrawLine(new Pen(c1, 2), q, w, mas[0, i], mas[1, i]);
                    q = mas[0, i];
                    w = mas[1, i];
                }
            gr.Dispose();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
  colorDialog1.ShowDialog();
            c1 = colorDialog1.Color;
        }
    }
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.10.2014, 17:40
Ответы с готовыми решениями:

Нарисованное стирается при сворачивании формы
public partial class MainForm : Form { Color deafultCol = Color.Black; bool...

Рисование на Picturebox: нарисованное стирается при сворачивании формы
Здравствуйте, подскажите как нарисовать на Picturebox. Нужно рисовать карандашом как в пейнте. ...

Рисование с помощью Line и Pset при сворачивании формы все стирается
Может ли кто-нибудь подсказать почему при рисовании методами Line and pset рисунок стирается если...

Автоматическое изменение размеров компонентов при изменении размеров формы
Приветствую. Подскажите. Форма по умолчанию при запуске приложения открывается по центру. Если...

4
8 / 19 / 9
Регистрация: 16.09.2014
Сообщений: 102
08.10.2014, 17:51 2
У тебя не новые точки появляются, а соединяется последняя с первой вот и все.

Добавлено через 2 минуты
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
 private void Form1_Paint(object sender, PaintEventArgs e)
 {
   Graphics gr = CreateGraphics();
   q = mas[0, 0]; // <-Вот это добавь
   w = mas[1, 0]; // <- Вот это добавь
   for (int i = 0; i < count; i++)
   {
      gr.DrawLine(new Pen(c1, 2), q, w, mas[0, i], mas[1, i]);
      q = mas[0, i];
      w = mas[1, i];
   }
   gr.Dispose();
 }
Исправь так и будет тебе счатье
0
0 / 0 / 0
Регистрация: 30.04.2013
Сообщений: 11
08.10.2014, 18:42  [ТС] 3
Сделал, как Вы написали. В первой линии первая и последующая точки не соединены, а в последующих линиях опять соединяются

Добавлено через 42 минуты
Решил вопрос созданием листа массивов
0
cer
09.10.2014, 10:46
  #4

Не по теме:

Вот народ не благодарный пошел :)

0
988 / 766 / 453
Регистрация: 09.04.2014
Сообщений: 1,846
09.10.2014, 11:33 5
Цитата Сообщение от cer Посмотреть сообщение
Graphics gr = CreateGraphics();
а почему бы не пользоваться готовым экземпляром Graphics, который содержится в PaintEventArgs?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.10.2014, 11:33

Изменение размеров элементов, сохраняя пропорции, при изменении размеров самой формы
Как изменять размеры элементов, сохраняя пропорции, при изменении размеров самой формы?

Центрировать кнопки при создании формы и при изменении размеров формы.
Спасайте) Центрировать кнопки при создании формы и при изменении размеров формы. Спасибо

Изменение размеров формы со свойством autosize=true при сворачивании/разворачивании
Добрый день! Помогите, пожалуйста,решить такую проблему: при сворачивании/разворачивании...

Текст на PictureBox стирается при сворачивании-разворачивании окна
Здравствуйте! У меня создается динамически несколько Picturebox. PictureBox vichisl = new...


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

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

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