Форум программистов, компьютерный форум, киберфорум
Наши страницы
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
ricudo1995
0 / 0 / 1
Регистрация: 26.05.2014
Сообщений: 30
#1

Как построить оси координат на picturebox и на этих осях построить график функции - Visual Basic .NET

26.05.2014, 15:34. Просмотров 1494. Ответов 10
Метки нет (Все метки)

Здравствуйте, в общем не могу разобраться как построить оси координат на picturebox и на этих осях еще построить некую функцию, помогите плиз
Вот такое надо построить


Это у меня сейчас


Вот маломальский код (неработающий)

vb.net
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
Public Class Form1
    Dim x() As Single
    Dim y() As Single
    Dim y1() As Single
    Dim y2() As Single
    Private y0 As Single
    Private x0 As Single
    Private xk As Single
    Private h, N, k, Max, Min, k1, k2, k3, k4, kx, ky As Single
    Private z1, z2, z3, z4, z5, z6, z7, z8 As Single
 
    Function f(ByVal l As Single, ByVal q As Single) As Single
        f = Math.Cos(l) - q
    End Function
 
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        x0 = Val(TextBox1.Text)
        xk = Val(TextBox2.Text)
        y0 = Val(TextBox4.Text)
        h = Val(TextBox3.Text)
        N = Math.Round((xk - x0) / h)
        ReDim x(N), y(N)
 
 
        DataGridView1.RowCount = N + 2
        DataGridView1.Columns(0, 0).Name = "X"
        DataGridView1.Columns(0, 1).Name = "Ye"
        DataGridView1.Columns(0, 2).Name = "Yrk"
        DataGridView1.Columns(0, 3).Name = "Yt"
 
        Max = 1
        Min = 0.55
        y(0) = y0
        y1(0) = y0
        y2(0) = y0
        For i = 0 To N
            x(i) = x0 + i * h
            y(i + 1) = Math.Round(y(i) + f(x(i), y(i)) * h, 4)
            k1 = h * f(x(i), y1(i))
            k2 = h * f(x(i) + h / 2, y1(i) + k1 / 2)
            k3 = h * f(x(i) + h / 2, y1(i) + k2 / 2)
            k4 = h * f(x(i) + h, y1(i) + k3)
            k = (k1 + 2 * k2 + 2 * k3 + k4) / 6
            y1(i + 1) = y1(i) + k4
            y2(i) = Math.Round(0.5 * Math.Exp(-x(i)) + ((Math.Cos(x(i)) + Math.Sin(x(i))) / 2), 4)
            If y(i) > Max Then Max = y(i)
            If y(i) < Min Then Min = y(i)
 
            DataGridView.Item(i + 1, 0).Value = Str(x(i))
            DataGridView.Item(i + 1, 1).Value = Str(y(i))
            DataGridView.Item(i + 1, 2).Value = Str(y1(i))
            DataGridView.Item(i + 1, 3).Value = Str(y2(i))
 
 
        Next i
        PictureBox.Cls()
        kx = (PictureBox.Width - 1200) / (xk - x0)
        ky = (PictureBox.Height - 1000) / (Max - Min)
        Label4.Caption = Str(Min)
        Label5.Caption = Str(Max)
        Label6.Caption = Str(x0)
        Label7.Caption = Str(xk)
        For i = 0 To N - 1
            z1 = Math.Round(720 + (x(i) - x0) * kx)
            z2 = Math.Round(5400 - (y(i) - Min) * ky)
            z3 = Math.Round(5400 - (y1(i) - Min) * ky)
            z4 = Math.Round(5400 - (y2(i) - Min) * ky)
            z5 = Math.Round(720 + (x(i + 1) - x0) * kx)
            z6 = Math.Round(5400 - (y(i + 1) - Min) * ky)
            z7 = Math.Round(5400 - (y1(i + 1) - Min) * ky)
            z8 = Math.Round(5400 - (y2(i + 1) - Min) * ky)
Picturebox.Line (z1, z2)-(z5, z6), vbGreen
Picturebox.Line (z1, z3)-(z5, z7), vbRed
Picturebox.Line (z1, z4)-(z5, z8)
        Next i
 
    End Sub

http://www.cyberforum.ru/vb-net/thread1522131.html
0
Миниатюры
Как построить оси координат на picturebox и на этих осях построить график функции   Как построить оси координат на picturebox и на этих осях построить график функции  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.05.2014, 15:34
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Как построить оси координат на picturebox и на этих осях построить график функции (Visual Basic .NET):

Как построить график функции
Необходимо построить график x=4/5x + a/5x^4. Помогите пожалуйста!:)

Как построить график квадратичной функции?
Нужно построить график функции y=ax2+bx+c, а также построить график по заданным...

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

Построить график функции
Как построить график функции y=exp(x)*sin(x)? Помогите, пожалуйста...

Построить график квадратичной функции
Как построить график квадратичной функции? y=x^2. знаю, что нужно использовать...

10
Памирыч
Почетный модератор
20840 / 8722 / 1079
Регистрация: 11.04.2010
Сообщений: 11,012
26.05.2014, 19:36 #2
С датагридом у Вас, я так понял, проблем нет. Только с рисованием в PictureBox?
0
ricudo1995
0 / 0 / 1
Регистрация: 26.05.2014
Сообщений: 30
26.05.2014, 19:45  [ТС] #3
Да, абсолютно верно

Меня напрягает то, что в новых версиях бейсика невозможно рисовать вручную тобишь командой Line на PictureBox (в 6 версии бейсика такая возможность была)
0
Памирыч
Почетный модератор
20840 / 8722 / 1079
Регистрация: 11.04.2010
Сообщений: 11,012
26.05.2014, 20:03 #4
Цитата Сообщение от ricudo1995 Посмотреть сообщение
Меня напрягает то, что в новых версиях бейсика невозможно рисовать вручную тобишь командой Line на PictureBox
Сейчас набросаю простой пример, может станет немного понятнее
0
Памирыч
Почетный модератор
20840 / 8722 / 1079
Регистрация: 11.04.2010
Сообщений: 11,012
26.05.2014, 20:33 #5
Итак, элементарнейший пример. На форме пикчербокс и таймер (активный)
vb.net
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
    Dim Pts As New List(Of Point)
    Dim R As New Random
    Dim Cnt As Integer
    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        PictureBox1.Refresh()
    End Sub
 
    Private Sub PictureBox1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PictureBox1.Paint
 
        CorelDraw(e)
        If Pts.Count > 2 Then
            e.Graphics.DrawLines(Pens.Red, Pts.ToArray) 'Или DrawCurve для сглаженных линий
        End If
 
        If Pts.Count < 23 Then
            Pts.Add(New Point(Cnt * 20 + 20, 380 - R.Next(0, 300)))
            Cnt += 1
        End If
        For Each P As Point In Pts
            e.Graphics.DrawString(P.X - 20 & "x" & 380 - P.Y, New Font("Arial", 8), Brushes.Black, P.X - 25, P.Y - 15)
            e.Graphics.FillEllipse(Brushes.Orange, New Rectangle(P.X - 2, P.Y - 2, 4, 4))
        Next
 
    End Sub
 
    Sub CorelDraw(ByVal e As System.Windows.Forms.PaintEventArgs)
        e.Graphics.SmoothingMode = Drawing2D.SmoothingMode.AntiAlias
        e.Graphics.DrawLine(Pens.Blue, 20, 10, 20, 400)
        e.Graphics.DrawLine(Pens.Blue, 20, 10, 15, 20)
        e.Graphics.DrawLine(Pens.Blue, 20, 10, 25, 20)
        e.Graphics.DrawLine(Pens.Blue, 5, 380, 500, 380)
        e.Graphics.DrawLine(Pens.Blue, 490, 375, 500, 380)
        e.Graphics.DrawLine(Pens.Blue, 490, 385, 500, 380)
        For I As Integer = 20 To 450 Step 20 'X
            e.Graphics.DrawLine(Pens.Blue, I, 377, I, 383)
        Next
        For I As Integer = 380 To 30 Step -20 'Y
            e.Graphics.DrawLine(Pens.Blue, 17, I, 23, I)
        Next
    End Sub
Если использовать DrawCurve, будет более сглаженный график (второй рисунок)
0
Миниатюры
Как построить оси координат на picturebox и на этих осях построить график функции   Как построить оси координат на picturebox и на этих осях построить график функции  
ricudo1995
0 / 0 / 1
Регистрация: 26.05.2014
Сообщений: 30
26.05.2014, 20:36  [ТС] #6
Спасибо, а можно выделить код для обозначения синих осей?
0
Памирыч
Почетный модератор
20840 / 8722 / 1079
Регистрация: 11.04.2010
Сообщений: 11,012
26.05.2014, 20:37 #7
Цитата Сообщение от ricudo1995 Посмотреть сообщение
код для обозначения синих осей?
Это метод
Цитата Сообщение от Памирыч Посмотреть сообщение
vb.net
1
CorelDraw
0
ricudo1995
0 / 0 / 1
Регистрация: 26.05.2014
Сообщений: 30
26.05.2014, 20:40  [ТС] #8
Еще раз спасибо, если будут траблы, обращусь в этой же ветке
0
ricudo1995
0 / 0 / 1
Регистрация: 26.05.2014
Сообщений: 30
26.05.2014, 21:16  [ТС] #9
Памирыч, может посмотрите проект малость и скажете ошибки...
В ворде код написанный в шестом бейсике, в проекте я переделал для 13
0
Вложения
Тип файла: rar WindowsApplication1111.rar (55.6 Кб, 27 просмотров)
Тип файла: docx Документ Microsoft Office Word.docx (12.4 Кб, 22 просмотров)
Памирыч
Почетный модератор
20840 / 8722 / 1079
Регистрация: 11.04.2010
Сообщений: 11,012
26.05.2014, 21:25 #10
Увы и ах, у меня старенькая студия, такие проекты ей не по зубам.
К тому же у меня абсолютная неспособность к чтению чужого кода.

Что до шестого лучше выбросить из головы эту мысль и написать работу с нуля.

Ждите ответа, может, местные ребята поколдуют и помогут чем смогут.
0
ricudo1995
0 / 0 / 1
Регистрация: 26.05.2014
Сообщений: 30
26.05.2014, 21:29  [ТС] #11
Цитата Сообщение от Памирыч Посмотреть сообщение
Увы и ах, у меня старенькая студия, такие проекты ей не по зубам.
К тому же у меня абсолютная неспособность к чтению чужого кода.

Что до шестого лучше выбросить из головы эту мысль и написать работу с нуля.

Ждите ответа, может, местные ребята поколдуют и помогут чем смогут.
Надеюсь
0
26.05.2014, 21:29
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.05.2014, 21:29
Привет! Вот еще темы с решениями:

Построить график функции Y=(x+3)/(x-2) на отрезке [3, 10]
Помогите плиз, нужно на форме на PictureBox с помощью одной кнопки построить...

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

Построить график функции на заданном интервале
2. Составить программу на языке Visual Basic Net, которая строит график функции...

Построить график функции, определить корень методом половинного деления
Построить график функции f(x), и определение корня методом половинного деления...


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

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

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