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

Построить график функции x^2, используя элементы Graphics

27.02.2012, 23:23. Просмотров 5612. Ответов 6
Метки нет (Все метки)


Есть задача построить график функции x^2 с вводом с клавиатуры границ и шага, используя элементы Graphics
Может быть есть у кого нибудь подобный код? Подскажите как сделать
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.02.2012, 23:23
Ответы с готовыми решениями:

Используя график функции построить график смещённой функции
используя график функции y=log2x построить график функции y=log2(x+2) Полностью решение нужно)))

Используя логическую функцию ЕСЛИ и встроенные математические функции, построить таблицу и график значений функции на от
=ЕСЛИ((A2<0,5;SIN(A2)*COS(A2);ЕСЛИ(A2>=0,8;A2-(LN(A2+1)/2)));exp(A2^2)+ABS(TAN(A2))) Говорит что...

Построить график функции, используя компонент
Построить график функции, используя компонент TСhart.

Построить график функции, используя plot
x=-5:0.5:5; Значение х 6,32 Вычислите значение функции упри указанном значении аргумента,...

6
3 / 3 / 1
Регистрация: 18.10.2010
Сообщений: 47
28.02.2012, 00:11 2
Я думаю, что подобный контрол существует, да ещё и любую функцию эвальюирует.
Вопрос в то - самому то сделать лучше... Ну как по мне.
0
c#
93 / 93 / 27
Регистрация: 25.03.2011
Сообщений: 290
28.02.2012, 00:55 3

Не по теме:

MansMI, согласен..даже почитать лень...


почитай
еще здесь
0
c#
93 / 93 / 27
Регистрация: 25.03.2011
Сообщений: 290
05.03.2012, 08:40 4
а что за шаг и границы можно узнать??

Добавлено через 1 минуту
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
 public partial class Form1 : Form
    {
 
        Panel panel;
        Graphics graphics;
 
        List<PointF> points;
 
        public Form1()
        {
            InitializeComponent();
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
            ClientSize = new System.Drawing.Size(400, 400);
 
            panel = new Panel()
            {
                Location = new Point(5, 5),
                Size = new Size(ClientSize.Width - 10, ClientSize.Height - 10),
                BorderStyle = BorderStyle.Fixed3D
            };
            Controls.Add(panel);
            graphics = panel.CreateGraphics();
        }
 
        public void DrawCoordSyst(Graphics graphics)
        {
            Pen pen = new Pen(Color.Black);
            graphics.DrawLine(pen, 0, panel.Height / 2, panel.Width, panel.Height / 2);
            graphics.DrawLine(pen, panel.Width / 2, 0, panel.Width / 2, panel.Height);
 
            for (int i = 10; i < panel.Width - 10; i += 10)
            {
                graphics.DrawLine(pen, i, panel.Height / 2 - 3, i, panel.Height / 2 + 3);
            }
            for (int i = 10; i < panel.Height - 10; i += 10)
            {
                graphics.DrawLine(pen, panel.Width / 2 - 3, i, panel.Width / 2 + 3, i);
            }
        }
 
        public void CalcGraphic()  //y=(x^2)
        {
            points = new List<PointF>();
            float x = 0, y = 0;
            for (float i = -panel.Width / 2; i < panel.Width / 2; i += 0.1f)
            {
                x = i;
                y = x * x / 10;
                points.Add(new PointF(x, y));
            }
        }
 
        public void DrawGraphic(Graphics graphics, List<PointF> points)
        {
            Brush brush = new SolidBrush(Color.Green);
            for (int i = 0; i < points.Count; i++)
            {
                graphics.FillEllipse(brush, points[i].X + panel.Width / 2, -points[i].Y + panel.Height / 2, 2, 2);
            }
        }
 
        private void Form1_Paint(object sender, PaintEventArgs e)
        {
            DrawCoordSyst(graphics);
 
            CalcGraphic();
 
            DrawGraphic(graphics, points);
        }
    }
0
0 / 0 / 0
Регистрация: 27.02.2012
Сообщений: 7
06.03.2012, 13:25  [ТС] 5
Граница - какими числовыми значениями ограничен график. Из какого промежутка будут браться числа для подстановки в формулу.
Шаг - чистота изменения этих чисел.

Добавлено через 1 минуту
Написал код, но выдает ошибку в строке 38. g.DrawCurve(myPen_3, koordinat);
В чем неправильно?

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
 
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;
using System.Drawing.Drawing2D;
 
namespace WindowsFormsApplication7
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            Graphics g = this.CreateGraphics();
            Pen myPen_3 = new Pen(Color.Blue,2);
            int n = 0;
            PointF[] koordinat = new PointF[n];
            float x1 =  float.Parse(textBox1.Text.ToString());
            float y1; 
            float x2 = float.Parse(textBox2.Text.ToString());
           float shag = float.Parse(textBox5.Text.ToString());
            for(int i = 0; i<n; i++)
            {               
                y1 = (x1 * x1);
                koordinat[i].X = x1;
                koordinat[i].Y = y1;
                x1 += shag;
            }
            g.DrawCurve(myPen_3, koordinat);
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
 
        }
 
        private void Form1_Paint(object sender, PaintEventArgs e)
        {
            Graphics g = e.Graphics;
            SolidBrush myBrush_1 = new SolidBrush(Color.White);
            g.FillRectangle(myBrush_1, 0, 0, 800, 600); 
            Pen myPen_1 = new Pen(Color.LightGray,1);
            int y = 595;
            while (y != 5)
            {
                g.DrawLine(myPen_1,5,y,795,y);
                y -= 5;
            }
            int x = 5;
            while (x != 795)
            {
                g.DrawLine(myPen_1,x,5,x,595);
                x += 5;
            }
            Pen myPen_2 = new Pen(Color.Black, 3);
            myPen_2.EndCap = LineCap.ArrowAnchor;
            g.DrawLine(myPen_2,400,595,400,5);
            g.DrawLine(myPen_2,5,565,795,565);
            g.DrawString("X",new Font("Calibri",15),Brushes.Black,785,570);
            g.DrawString("Y", new Font("Calibri", 15), Brushes.Black, 410, 5);
        }          
    }
}
0
c#
93 / 93 / 27
Регистрация: 25.03.2011
Сообщений: 290
06.03.2012, 17:48 6
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
private void button1_Click(object sender, EventArgs e)
        {
            Graphics g = this.CreateGraphics();
            Pen myPen_3 = new Pen(Color.Blue, 2);
            float x1 = float.Parse(textBox1.Text.ToString());
            float y1 = 0;
            float x2 = float.Parse(textBox2.Text.ToString());
            float shag = float.Parse(textBox5.Text.ToString());
            int n = (int)((x2 - x1) / shag);
            PointF[] koordinat = new PointF[n];
            for (int i = 0; i < n; i++)
            {
                koordinat[i].X = x1;
                koordinat[i].Y = x1 * x1;
                x1 += shag;
            }
            g.DrawCurve(myPen_3, koordinat);
        }
а чем мой вариант не устраивает
1
0 / 0 / 0
Регистрация: 27.02.2012
Сообщений: 7
07.03.2012, 13:35  [ТС] 7
спасибо большое, понял свою ошибку)

а вот ветви графика идут вниз, не подскажешь как развернуть вверх?

Добавлено через 1 час 4 минуты
c направлением разобрался)
но появился еще один вопрос, если задавать равный отрезок, например от -10 до 10, или не равный, например от -15 до 10, то ветви получаются разной длины, как можно это исправить?

Добавлено через 12 часов 56 минут
всё сам исправил, спасибо еще раз)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.03.2012, 13:35

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Используя элементарные преобразования графиков, построить график функции
Используя элементарные преобразования графиков, построить график функции y=1–2cos(2x). Помогите...

Построить график параметрически заданной функции, используя plot и comet
Построить график параметрически заданной функции, используя plot и comet.

Построить график функции в MathCAD используя код в Visual Basic
Ребят подскажите пожалуйста. Я не могу сообразить как связать библиотеки Visual Basic с Mathcad,...

Построить график параметрически заданной функции, используя plot и comet
Построить график параметрически заданной функции, используя plot и comet. x(t)=cost; y(t)=sin(sint)


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

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

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