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

цикл, для построения графика X^2

24.03.2013, 13:09. Показов 3298. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите...не могу сообразить, как в C# исполнить цикл, для построения графика X^2, если нетрудно, то пропишите с самого начала, с объявления переменной, при этом должно проверяться: нажат ли RadioButton... Заранее спасибо)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.03.2013, 13:09
Ответы с готовыми решениями:

Создание графика: куда нужно вставить цикл для его построения
Доброе время суток! Помогите разобраться с программой для графиков. куда нужно вставить цикл для его построения??? using System; ...

Парсер уравнений для построения графика
Как парсировать уравнение для построения графика? По сути строку "2*x+3" надо перевести в выражение -__- chart1.Series.Points.AddXY(x,...

Разбор строки для построения графика
на c# необходимо написать программу, которая строит графики. Как разобрать строку по цифрам я знаю: public void SetFunc(string s) ...

12
)))
 Аватар для aleks_pilipenko
610 / 423 / 55
Регистрация: 31.12.2009
Сообщений: 2,334
Записей в блоге: 3
24.03.2013, 20:02
Не знаю, как тут прописать RadioButton. Надеюсь, это поможет:
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
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
 
namespace grafic
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        [STAThread]
        static void Main()
        {
            Application.Run(new Form1());
        }
        int x, y,x1,y1;
        private void InitializeComponent()
        {
            this.SuspendLayout();
            // 
            // Form1
            // 
            this.ClientSize = new System.Drawing.Size(592, 473);
            this.DoubleBuffered = true;
            this.Name = "Form1";
            this.Paint += new System.Windows.Forms.PaintEventHandler(this.Form1_Paint);
            this.ResumeLayout(false);
 
        }
 
        private void Form1_Paint(object sender, PaintEventArgs e)
        {
            e.Graphics.TranslateTransform(300, 400);
            e.Graphics.DrawEllipse(new Pen(Color.Red), 0, 0, 1, 1);
            for (int i = 1; i < 600; i++)
            {
                x1 = (i - 301)/10;
                y1 =- x1 * x1/10;
                x = (i - 300)/10;
                y =- x * x/10;
                e.Graphics.DrawLine(new Pen(Color.Red), x1, y1, x, y);
            }
        }
    }
}
1
0 / 0 / 0
Регистрация: 17.03.2013
Сообщений: 39
24.03.2013, 20:08  [ТС]
aleks_pilipenko, Спасибо огромнейшее))) буду двигаться в этом направлении, теперь у меня хоть какое то направление есть...спасибо еще раз)

Добавлено через 5 минут
Может быть кто-нибудь еще чем нибудь поможет? Буду благодарен)
0
0 / 0 / 0
Регистрация: 17.03.2013
Сообщений: 39
25.03.2013, 22:13  [ТС]
Ааап
0
 Аватар для ViterAlex
8951 / 4863 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
25.03.2013, 23:29
Про радиокнопку не понял, а параболу так можно нарисовать
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
private void button1_Click(object sender, EventArgs e)
{
    DrawParabola();
}
Bitmap bmp;
void DrawParabola()
{
    //для рисования координатных осей
    Pen axis = new Pen(Color.DarkGray, 2);
    axis.StartCap = System.Drawing.Drawing2D.LineCap.Flat;
    axis.EndCap = System.Drawing.Drawing2D.LineCap.ArrowAnchor;
    //для реперных точек
    Pen points = new Pen(Color.DarkGray, 1);
    points.DashStyle = System.Drawing.Drawing2D.DashStyle.Dash;
    //Битмап для рисования
    bmp = new Bitmap(pictureBox1.Width, pictureBox1.Height);
    //Размер области рисования
    Rectangle rect = pictureBox1.ClientRectangle;
    using (Graphics g = Graphics.FromImage(bmp))
    {
        Point pt1 = new Point(rect.Left + 10, rect.Bottom - 10);
        Point pt2 = new Point(rect.Right - 10, rect.Bottom - 10);
        g.DrawLine(axis, pt1, pt2);//ось X
        pt1 = new Point(rect.Left + rect.Width / 2, rect.Bottom - 10);
        pt2 = new Point(rect.Left + rect.Width / 2, rect.Top + 10);
        g.DrawLine(axis, pt1, pt2);//ось Y
        //Начало координат
        Point ptZero = pt1;
        int scale = 12;//пикселей на единицу
        PointF[] apexes = new PointF[0];//точки для построения параболы
        float x, y;//координаты расчётных точек
        for (int i = -10; i < 11; ++i)
        {
            x = ptZero.X + i * scale;
            y = ptZero.Y - (float)Math.Pow(i, 2) * scale;
            //отсеиваем всё, что вышло за пределы рисунка по высоте
            if (y > rect.Top)
            {
                Array.Resize<PointF>(ref apexes, apexes.Length + 1);
                apexes[apexes.GetUpperBound(0)] = new PointF(x, y);
                g.DrawLine(points, x, ptZero.Y, x, y);
                g.DrawLine(points, x, y, ptZero.X, y);
            }
        }
        //рисуем параболу
        g.DrawCurve(new Pen(Color.Red, 2), apexes);
        pictureBox1.Refresh();
 
    }
}
Миниатюры
цикл, для построения графика X^2  
0
 Аватар для ViterAlex
8951 / 4863 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
25.03.2013, 23:37
Забыл. Битмап помещать в пикчербокс при прорисовке
C#
1
2
3
4
        private void pictureBox1_Paint(object sender, PaintEventArgs e)
        {
            if (bmp != null) pictureBox1.Image = bmp;
        }
1
0 / 0 / 0
Регистрация: 17.03.2013
Сообщений: 39
26.03.2013, 16:32  [ТС]
ViterAlex, Про радиобаттон: просто в приложении должно выполнять построении не только параболы, а еще нескольких графиков, которые пользователь сможет выбрать при нажатии на радиобатон, а сама структура приложения такая: основная форма, на которой расположены кнопки (радиобатоны, кнопка решить...) затем при нажатии на кнопку "Решить" должно появляться новое окно, в котором кокраз и происходит рисование параболы или других графиков (но пока хочу с параболой разобраться), еще можно добавить такую опцию, как изменение отрезка, на котором рисуется парабола, но пока это не беру в расчеты, т.к. для начала надо разобраться на простом)
P.S. Спасибо за код)
0
)))
 Аватар для aleks_pilipenko
610 / 423 / 55
Регистрация: 31.12.2009
Сообщений: 2,334
Записей в блоге: 3
26.03.2013, 17:07
Теперь понятно, добавил функцию, в которой, в зависимости от RadioButton-ов, выбирается график:
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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
 
namespace grafic
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        [STAThread]
        static void Main()
        {
            Application.Run(new Form1());
        }
        int x, y,x1,y1;
        private RadioButton rb1;
        private Label label1;
        private Label label2;
        private Label label3;
        private RadioButton rb2;
        private void InitializeComponent()
        {
            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1));
            this.rb1 = new System.Windows.Forms.RadioButton();
            this.label1 = new System.Windows.Forms.Label();
            this.label2 = new System.Windows.Forms.Label();
            this.label3 = new System.Windows.Forms.Label();
            this.rb2 = new System.Windows.Forms.RadioButton();
            this.SuspendLayout();
            // 
            // rb1
            // 
            this.rb1.AutoSize = true;
            this.rb1.Location = new System.Drawing.Point(100, 44);
            this.rb1.Name = "rb1";
            this.rb1.Size = new System.Drawing.Size(74, 17);
            this.rb1.TabIndex = 0;
            this.rb1.Text = "Включить";
            this.rb1.UseVisualStyleBackColor = true;
            this.rb1.CheckedChanged += new System.EventHandler(this.rb_CheckedChanged);
            // 
            // label1
            // 
            this.label1.AutoSize = true;
            this.label1.Location = new System.Drawing.Point(41, 13);
            this.label1.Name = "label1";
            this.label1.Size = new System.Drawing.Size(91, 13);
            this.label1.TabIndex = 1;
            this.label1.Text = "График функции\r\n";
            // 
            // label2
            // 
            this.label2.AutoSize = true;
            this.label2.Location = new System.Drawing.Point(41, 46);
            this.label2.Name = "label2";
            this.label2.Size = new System.Drawing.Size(24, 13);
            this.label2.TabIndex = 2;
            this.label2.Text = "x^3";
            // 
            // label3
            // 
            this.label3.AutoSize = true;
            this.label3.Location = new System.Drawing.Point(41, 85);
            this.label3.Name = "label3";
            this.label3.Size = new System.Drawing.Size(24, 13);
            this.label3.TabIndex = 3;
            this.label3.Text = "x^2";
            // 
            // rb2
            // 
            this.rb2.AutoSize = true;
            this.rb2.Checked = true;
            this.rb2.Location = new System.Drawing.Point(100, 85);
            this.rb2.Name = "rb2";
            this.rb2.Size = new System.Drawing.Size(74, 17);
            this.rb2.TabIndex = 4;
            this.rb2.TabStop = true;
            this.rb2.Text = "Включить";
            this.rb2.UseVisualStyleBackColor = true;
            this.rb2.CheckedChanged += new System.EventHandler(this.rb_CheckedChanged);
            // 
            // Form1
            // 
            this.ClientSize = new System.Drawing.Size(592, 473);
            this.Controls.Add(this.rb2);
            this.Controls.Add(this.label3);
            this.Controls.Add(this.label2);
            this.Controls.Add(this.label1);
            this.Controls.Add(this.rb1);
            this.DoubleBuffered = true;
            this.Name = "Form1";
            this.Paint += new System.Windows.Forms.PaintEventHandler(this.Form1_Paint);
            this.ResumeLayout(false);
            this.PerformLayout();
 
        }
        private void Form1_Paint(object sender, PaintEventArgs e)
        {
            e.Graphics.TranslateTransform(300, 400);
            e.Graphics.DrawEllipse(new Pen(Color.Red), 0, 0, 1, 1);
            for (int i = 1; i < 600; i++)
            {
                x1 = (i - 301)/10;
                y1 = f(x1);
                x = (i - 300)/10;
                y = f(x);
                e.Graphics.DrawLine(new Pen(Color.Red), x1, y1, x, y);
            }
        }
        private int f(int xx)
        {
            int yy=0;
            if (rb1.Checked) yy = -xx * xx / 10;
            if (rb2.Checked) yy = -xx * xx*xx / 10;
            return yy;
        }
        private void rb_CheckedChanged(object sender, EventArgs e)
        {
            this.Invalidate();
        }
 
    }
}
0
0 / 0 / 0
Регистрация: 17.03.2013
Сообщений: 39
26.03.2013, 17:10  [ТС]
aleks_pilipenko, в данный момент нет возможности попробовать, но возник вопрос: мне это просто вставить в программный код и все заработает или как то надо по-другому?
0
)))
 Аватар для aleks_pilipenko
610 / 423 / 55
Регистрация: 31.12.2009
Сообщений: 2,334
Записей в блоге: 3
26.03.2013, 17:17
Я создаю новый пустой(Empty) проект, потом добавляю на него новую форму, удаляю из неё в Solution Explorer Form1.Designer.cs, после этого остается Form1.cs, открываю его код и туда можно добавлять все, что я написал с заменой...
0
0 / 0 / 0
Регистрация: 17.03.2013
Сообщений: 39
26.03.2013, 17:26  [ТС]
хорошо, спасибо)

Добавлено через 8 минут
aleks_pilipenko, Я попробовал, всё работает, но есть одно НО (я думаю, что смогу его исправить сам) в вашем программном коде всё создается из программного кода (автоматически, не знаю как назвать) а я хочу сделать форму, на которую сначала добавляешь все элементы (кнопки, радиобатоны...), а потом прописываешь код и получается, что создаются они не по ходу выполнения кода, а лично мной добавлены на форму...
Если не ясно, могу скинуть какое-нибудь мое простенькое приложение, где вы все увидите)
0
)))
 Аватар для aleks_pilipenko
610 / 423 / 55
Регистрация: 31.12.2009
Сообщений: 2,334
Записей в блоге: 3
26.03.2013, 19:14
Цитата Сообщение от Dk21091994 Посмотреть сообщение
могу скинуть какое-нибудь мое простенькое приложение, где вы все увидите
На моем приложении тоже руками можно добавлять...
Я так делаю, чтобы весь проект из нескольких файлов не отправлять..
два раза кликни на form1.cs в SolutionExplorer. он откроется, как тебе надо...
Потом можно выделить кнопки, и т.д. и скопировать в свой проект, ну и с кодом также, выделить-копировать-вставить..
0
0 / 0 / 0
Регистрация: 17.03.2013
Сообщений: 39
26.03.2013, 21:58  [ТС]
aleks_pilipenko, Спасибо за помощь) буду разбираться, если появятся вопросы, напишу, еще раз огромное спасибо)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.03.2013, 21:58
Помогаю со студенческими работами здесь

Считать функцию для построения графика
Нужно написать программу, с помощью которой пользователь может построить график введенной им функции. С построением графика все более менее...

Сохранить в массив частоты амплитуды wav файла для последующего построения графика
Привет всем! Помогите разобраться как сохранить в массив частоты амплитуды wav файла для последующего построения графика. Стандартными...

Написать приложение для построения графика. Дано квадратичное уравнение y=ax2+bx+c. Коэффициенты a,b,c вводятся в компоненты textbox. График должен б
Написать приложение для построения графика. Дано квадратичное уравнение y=ax2+bx+c. Коэффициенты a,b,c вводятся в компоненты textbox....

Построения графика
Уже нашумевшая тема. Но не смог найти подходящего. Мне из листа графиков нужно выбрать один из 4х (cos,sin...) и цвет ну и вывести с...

Построения графика в форме по размеру
Нужно осуществить построение графика в форме по размеру (длина и ширина). Ну по идее это через Graphics , но я не знаю какая команда...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru