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

Построить график функции. Исправить ошибки в коде

26.10.2012, 17:05. Показов 1321. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите, пожалуйста. Не могу понять, в чём проблема. График функции : (ax + b)/sin(kx + m)

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
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Linq;
using System.Text;
using System.Windows.Forms;
 
namespace TEMPLATE_FOR_GRAPH
{
    public partial class Form2 : Form
    {
        public double a, b, k, m, x1, x2;
        public double max = 0, min = 0;
        public Form2()
        {
            InitializeComponent();
        }
        protected override void OnPaint(PaintEventArgs e)
        {
            base.OnPaint(e);
        }
        private void Build_graphic(object sender, EventArgs e)
        {
            a = Convert.ToDouble(textBox1.Text);
            b = Convert.ToDouble(textBox2.Text);
            k = Convert.ToDouble(textBox3.Text);
            m = Convert.ToDouble(textBox4.Text);
            x1 = Convert.ToDouble(textBox5.Text);
            x2 = Convert.ToDouble(textBox6.Text);
            GraphicGo();
        }
        private void GraphicGo()
        {
            Pen pen = new Pen(Color.Black, 2);
            Graphics area = graphBox.CreateGraphics();
            area.Clear(Color.White);
            area.SmoothingMode = SmoothingMode.HighQuality;
            int xRes = graphBox.Width / 2;  // Центр по горизонтали
            int yRes = graphBox.Height / 2; // Центр по вертикали
            Point LEFT = new Point(0, yRes);
            Point RIGHT = new Point(graphBox.Width, yRes);
            Point TOP = new Point(xRes, 0);
            Point BOTTOM = new Point(xRes, graphBox.Height);
            area.DrawLine(pen, LEFT, RIGHT);
            area.DrawLine(pen, TOP, BOTTOM);
            int steps = 500; // разбиение
            double step = (Math.Abs(x1) + Math.Abs(x2)) / steps;
            PointF[] PointArray = new PointF[steps];
            int i = 0;
            for (double x = x1; i < steps; x += step)
            {
                PointArray[i] = new PointF(aX(x), (float)((a * x + b) / Math.Sin(k * x + m)));
                i++;
            }
            MessageBox.Show((PointArray[1].ToString()));
            area.DrawLines(new Pen(Color.Red), PointArray);
        }
        private float aX(double x)
        {
            return (float)(x * (graphBox.Width / (Math.Abs(x1) + Math.Abs(x2))) + graphBox.Width / 2);
        }
        private void Form2_SizeChanged(object sender, EventArgs e)
        {
            graphBox.Size = new Size(this.Width - 300, this.Height - 200);
            GraphicGo();
        }
    }
}
Добавлено через 2 часа 54 минуты
Up!!!!!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
26.10.2012, 17:05
Ответы с готовыми решениями:

Исправить ошибки в коде программы
using System; usingSystem.Collections.Generic; usingSystem.Linq; usingSystem.Text; namespaceCMO_misiagin { classCMO_work {...

Исправить ошибки в коде авторизации на сайте
Как убрать эти ошибки using System; using System.Linq; using System.Collections.Generic; using System.ComponentModel; using...

Исправить ошибки в коде unit теста
Серьезность Код Описание Проект Файл Строка Состояние подавления Ошибка CS0246 Не удалось найти тип или имя пространства имен...

4
432 / 433 / 93
Регистрация: 16.07.2012
Сообщений: 886
26.10.2012, 18:34
Рисуйте свой график в методе OnPaint() формы

Добавлено через 12 минут
Как-то так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        DoubleBuffered = true;
    }
 
    protected override void OnPaint(PaintEventArgs e)
    {
        base.OnPaint(e);
        e.Graphics.DrawLine(Pens.Black, new Point(0, 0), new Point(ClientSize.Width, ClientSize.Height));
        e.Graphics.DrawLine(Pens.Black, new Point(0, ClientSize.Height), new Point(ClientSize.Width, 0));
    }
 
    protected override void OnSizeChanged(EventArgs e)
    {
        base.OnSizeChanged(e);
        Invalidate();
    }
}
0
0 / 0 / 0
Регистрация: 26.10.2012
Сообщений: 12
26.10.2012, 21:27  [ТС]
Я рисую в PictureBox, так что мне не подходит данный метод. Прошу посмотреть ошибки в данном коде. Т.к. я просто в замешательстве.
0
432 / 433 / 93
Регистрация: 16.07.2012
Сообщений: 886
27.10.2012, 10:01
Я же написал уже в чем ваша ошибка - если надо обновить какую-то область (например, при изменении размеров), то надо вызывать Invalidate, а само рисование уже выполнять в событии Paint.
Если так уж хотите в PictureBox рисовать, то просто замените событие Paint формы на событие Paint PictureBox'а:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        DoubleBuffered = true;
    }
 
    private void pictureBox1_SizeChanged(object sender, EventArgs e)
    {
        pictureBox1.Invalidate();
    }
 
    private void pictureBox1_Paint(object sender, PaintEventArgs e)
    {
        e.Graphics.DrawLine(Pens.Black, new Point(0, 0), new Point(pictureBox1.Width, pictureBox1.Height));
        e.Graphics.DrawLine(Pens.Black, new Point(0, pictureBox1.Height), new Point(pictureBox1.Width, 0));
    }
}
0
0 / 0 / 0
Регистрация: 26.10.2012
Сообщений: 12
27.10.2012, 10:03  [ТС]
Не знаю, о чём Вы. Я рисую по клику на кнопку. Всё заработало, просто я перепутал номера textBox'ов и получал координаты, которые не влезают в мой монитор.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.10.2012, 10:03
Помогаю со студенческими работами здесь

Исправить ошибки в коде (бильярдный стол с шарами)
Ребят, привет)). Помогите, пожалуйста исправить код программы: using System; using System.Collections.Generic; using...

Исправить ошибки в коде отправки SMS через GSM-модем
Здравствуйте! Недавно начал писать на c#. Поставили передо мной задачу отправки смс через gsm модем. Все бы ничего, но написанная...

Построить график функции
Построить график по функции. F(x)=Sin(x), 0&lt;=x&lt;=pi. пытаюсь учить си шарп но с графиком проблемы. помогите плиз

Построить график функции у = Ln x
может кто решить задачку. Построить график функции у = Ln x спасибо!!!

Построить график из функции
Добрый день. Нужна помощь гуру. Задали курсак написать &quot;Построение графиков из функции&quot;. Хотел бы узнать, что можно почитать для...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG-файла с альфа-каналом с помощью библиотеки SDL3_image на Android
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru