Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# Windows Forms
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
Dk21091994
0 / 0 / 0
Регистрация: 17.03.2013
Сообщений: 39
1

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

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

Помогите...не могу сообразить, как в C# исполнить цикл, для построения графика X^2, если нетрудно, то пропишите с самого начала, с объявления переменной, при этом должно проверяться: нажат ли RadioButton... Заранее спасибо)
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.03.2013, 13:09
Ответы с готовыми решениями:

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

Парсер уравнений для построения графика
Как парсировать уравнение для построения графика? По сути строку "2*x+3" надо...

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

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

Разбор строки для построения графика
на c# необходимо написать программу, которая строит графики. Как разобрать...

12
aleks_pilipenko
)))
606 / 328 / 55
Регистрация: 31.12.2009
Сообщений: 2,283
Записей в блоге: 3
24.03.2013, 20:02 2
Не знаю, как тут прописать 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
Dk21091994
0 / 0 / 0
Регистрация: 17.03.2013
Сообщений: 39
24.03.2013, 20:08  [ТС] 3
aleks_pilipenko, Спасибо огромнейшее))) буду двигаться в этом направлении, теперь у меня хоть какое то направление есть...спасибо еще раз)

Добавлено через 5 минут
Может быть кто-нибудь еще чем нибудь поможет? Буду благодарен)
0
Dk21091994
0 / 0 / 0
Регистрация: 17.03.2013
Сообщений: 39
25.03.2013, 22:13  [ТС] 4
Ааап
0
ViterAlex
6838 / 3800 / 1553
Регистрация: 11.02.2013
Сообщений: 8,346
Завершенные тесты: 3
25.03.2013, 23:29 5
Про радиокнопку не понял, а параболу так можно нарисовать
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();
 
    }
}
0
Миниатюры
цикл, для построения графика X^2  
ViterAlex
6838 / 3800 / 1553
Регистрация: 11.02.2013
Сообщений: 8,346
Завершенные тесты: 3
25.03.2013, 23:37 6
Забыл. Битмап помещать в пикчербокс при прорисовке
C#
1
2
3
4
        private void pictureBox1_Paint(object sender, PaintEventArgs e)
        {
            if (bmp != null) pictureBox1.Image = bmp;
        }
1
Dk21091994
0 / 0 / 0
Регистрация: 17.03.2013
Сообщений: 39
26.03.2013, 16:32  [ТС] 7
ViterAlex, Про радиобаттон: просто в приложении должно выполнять построении не только параболы, а еще нескольких графиков, которые пользователь сможет выбрать при нажатии на радиобатон, а сама структура приложения такая: основная форма, на которой расположены кнопки (радиобатоны, кнопка решить...) затем при нажатии на кнопку "Решить" должно появляться новое окно, в котором кокраз и происходит рисование параболы или других графиков (но пока хочу с параболой разобраться), еще можно добавить такую опцию, как изменение отрезка, на котором рисуется парабола, но пока это не беру в расчеты, т.к. для начала надо разобраться на простом)
P.S. Спасибо за код)
0
aleks_pilipenko
)))
606 / 328 / 55
Регистрация: 31.12.2009
Сообщений: 2,283
Записей в блоге: 3
26.03.2013, 17:07 8
Теперь понятно, добавил функцию, в которой, в зависимости от 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
Dk21091994
0 / 0 / 0
Регистрация: 17.03.2013
Сообщений: 39
26.03.2013, 17:10  [ТС] 9
aleks_pilipenko, в данный момент нет возможности попробовать, но возник вопрос: мне это просто вставить в программный код и все заработает или как то надо по-другому?
0
aleks_pilipenko
)))
606 / 328 / 55
Регистрация: 31.12.2009
Сообщений: 2,283
Записей в блоге: 3
26.03.2013, 17:17 10
Я создаю новый пустой(Empty) проект, потом добавляю на него новую форму, удаляю из неё в Solution Explorer Form1.Designer.cs, после этого остается Form1.cs, открываю его код и туда можно добавлять все, что я написал с заменой...
0
Dk21091994
0 / 0 / 0
Регистрация: 17.03.2013
Сообщений: 39
26.03.2013, 17:26  [ТС] 11
хорошо, спасибо)

Добавлено через 8 минут
aleks_pilipenko, Я попробовал, всё работает, но есть одно НО (я думаю, что смогу его исправить сам) в вашем программном коде всё создается из программного кода (автоматически, не знаю как назвать) а я хочу сделать форму, на которую сначала добавляешь все элементы (кнопки, радиобатоны...), а потом прописываешь код и получается, что создаются они не по ходу выполнения кода, а лично мной добавлены на форму...
Если не ясно, могу скинуть какое-нибудь мое простенькое приложение, где вы все увидите)
0
aleks_pilipenko
)))
606 / 328 / 55
Регистрация: 31.12.2009
Сообщений: 2,283
Записей в блоге: 3
26.03.2013, 19:14 12
Цитата Сообщение от Dk21091994 Посмотреть сообщение
могу скинуть какое-нибудь мое простенькое приложение, где вы все увидите
На моем приложении тоже руками можно добавлять...
Я так делаю, чтобы весь проект из нескольких файлов не отправлять..
два раза кликни на form1.cs в SolutionExplorer. он откроется, как тебе надо...
Потом можно выделить кнопки, и т.д. и скопировать в свой проект, ну и с кодом также, выделить-копировать-вставить..
0
Dk21091994
0 / 0 / 0
Регистрация: 17.03.2013
Сообщений: 39
26.03.2013, 21:58  [ТС] 13
aleks_pilipenko, Спасибо за помощь) буду разбираться, если появятся вопросы, напишу, еще раз огромное спасибо)
0
26.03.2013, 21:58
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.03.2013, 21:58

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

Построения графика
Уже нашумевшая тема. Но не смог найти подходящего. Мне из листа графиков...

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru