Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/18: Рейтинг темы: голосов - 18, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 11.02.2013
Сообщений: 7
1
.NET 4.x

Отрисовка графика в pictureBox при загрузке формы

31.10.2014, 02:38. Показов 3361. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброй ночи! Есть форма, в которой располагается pictureBox1, на котором рисуется график с координатными осями.
Необходимо сделать, что бы при запуске программы он сразу отрисовывался, но ничего не получается - уже все перепробовал =( График отрисовывается только при вызове pictureBox1_Paint (т.е. к примеру когда я окно программы перемещаю за край экрана и назад, то график появится) Пробовал и .Invalidate() и .Refresh() и в конструкторе класса вызывать DrawCoordinatSystem() и DrawGraphic()- нивкакую. Может я неправильно что-то делал, помогите!
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
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
    {
        Color colorGraphic;
        Color colorPSK;
        Color colorBackground;
 
        PointF[] points;
 
        public Form1()
        {
            InitializeComponent();
            this.colorGraphic = Color.Black;
            this.colorPSK = Color.Gray;
            this.colorBackground = Color.LightBlue;
            UpdateColor();
            CalcGraphics();
        }
 
        private void UpdateColor()
        {
            pictureBox1.BackColor = this.colorBackground;
            pictureBox2.BackColor = this.colorGraphic;
            pictureBox3.BackColor = this.colorBackground;
            pictureBox4.BackColor = this.colorPSK;
        }
 
        private void DrawCoordinatSystem()
        {
            Point center = new Point(pictureBox1.Height / 2, pictureBox1.Width / 2);
            Graphics graphic = pictureBox1.CreateGraphics();
 
            Pen pen = new Pen(Color.Gray);
 
            graphic.DrawLine(pen, 0, pictureBox1.Height / 2, pictureBox1.Width, pictureBox1.Height / 2);
            graphic.DrawLine(pen, pictureBox1.Width/2,0,pictureBox1.Width/2,pictureBox1.Height);
        }
 
        private void DrawGraphic()
        {
            Graphics graphic = pictureBox1.CreateGraphics();
            Pen pen = new Pen(Color.Red);
            graphic.DrawCurve(pen, points);
        }
 
        private void CalcGraphics()
        {
            int size = Convert.ToInt32(numericUpDown2.Value);
            float step = 1 / float.Parse(textBox1.Text);
            int graphicWigth = Convert.ToInt32(pictureBox1.Width * step);
            
            points = new PointF[Convert.ToInt32(graphicWigth / step)];
 
            int n = 0;
            for (float i = -graphicWigth / 2; i < graphicWigth / 2 && n < points.Length; i += step, n++)
                points[n] = new PointF(pictureBox1.Width / 2 - i * size, pictureBox1.Height / 2 - (float)(Math.Sin(i) + 2 * Math.Cos(i)) * size);
        }
 
        private void pictureBox2_Click(object sender, EventArgs e)
        {
            if (colorDialog1.ShowDialog() == DialogResult.OK)
            {
                this.colorGraphic = colorDialog1.Color;
                UpdateColor();
            }
        }
 
        private void pictureBox4_Click(object sender, EventArgs e)
        {
            if (colorDialog1.ShowDialog() == DialogResult.OK)
            {
                this.colorPSK = colorDialog1.Color;
                UpdateColor();
            }
        }
 
        private void pictureBox3_Click(object sender, EventArgs e)
        {
            if (colorDialog1.ShowDialog() == DialogResult.OK)
            {
                this.colorBackground = colorDialog1.Color;
                UpdateColor();
            }
        }
 
        private void pictureBox1_Paint(object sender, PaintEventArgs e)
        {
            DrawCoordinatSystem();
            DrawGraphic();
        }
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.10.2014, 02:38
Ответы с готовыми решениями:

Отрисовка рисунка при загрузке формы
Добрый день, такой вопрос, имеется рисунок. Как сделать так, чтобы он отрисовывать в pictureBox при...

Не происходит отрисовка пользовательского контрола при загрузке формы
using System; using System.Collections.Generic; using System.ComponentModel; using...

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

Нарисовать квадрат в PictureBox при загрузке формы
При запуске формы должен отображаться квадратик. Все делаю через pictureBox но ничего не работает....

2
8940 / 4852 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
31.10.2014, 02:56 2
Цитата Сообщение от The_MoHcTpUk Посмотреть сообщение
График отрисовывается только при вызове pictureBox1_Paint
Уже хорошо. Осталось правильно вызвать Invalidate. Например, после 27 строки
0
0 / 0 / 0
Регистрация: 11.02.2013
Сообщений: 7
31.10.2014, 14:01  [ТС] 3
В том то и проблема, что не работает, если в том месте вызывать. Я изначально так и пытался сделать.
0
31.10.2014, 14:01
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.10.2014, 14:01
Помогаю со студенческими работами здесь

Функция отрисовки сетки в элементе picturebox не отрабатывается при загрузке формы (Form)
Доброго времени суток. Возникла следующая ситуация: есть функция отрисовки линий (например,...

График PictureBox отрисовка при открытии файла
Здравствуйте, пишу приложение где использую PictureBox(PB) в качестве полотна для вывода графика....

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

Имя картинки в label при загрузке в pictureBox
Привет, при нажатии кнопки button1 открывается диалог. Есть возможность загрузить 1 или 2...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru