2 / 2 / 0
Регистрация: 26.05.2014
Сообщений: 46
1

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

26.05.2014, 15:34. Показов 4108. Ответов 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
Миниатюры
Как построить оси координат на picturebox и на этих осях построить график функции   Как построить оси координат на picturebox и на этих осях построить график функции  
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.05.2014, 15:34
Ответы с готовыми решениями:

Графика. Построить график функции и оси координат.
Нужно построить график функции y=sin(2x) в осях координат с шагом разметки пи/4. Добавлено через...

Нарисовать оси координат и построить график функции
Как нарисовать вот такую ось координат и построить на ней график функции ? y= a exp(bx)

Построить график функции нарисовать и разместить оси координат
Помогите пожалуйста. Найти область определения функций D(f), ее нули экстремумы и множества...

Построить график функции, вывести, разместить и подписать оси координат
Построить график функции, вывести, разместить и подписать оси координат (обе).Предусмотреть...

10
Почетный модератор
21363 / 9097 / 1082
Регистрация: 11.04.2010
Сообщений: 11,014
26.05.2014, 19:36 2
С датагридом у Вас, я так понял, проблем нет. Только с рисованием в PictureBox?
0
2 / 2 / 0
Регистрация: 26.05.2014
Сообщений: 46
26.05.2014, 19:45  [ТС] 3
Да, абсолютно верно

Меня напрягает то, что в новых версиях бейсика невозможно рисовать вручную тобишь командой Line на PictureBox (в 6 версии бейсика такая возможность была)
0
Почетный модератор
21363 / 9097 / 1082
Регистрация: 11.04.2010
Сообщений: 11,014
26.05.2014, 20:03 4
Цитата Сообщение от ricudo1995 Посмотреть сообщение
Меня напрягает то, что в новых версиях бейсика невозможно рисовать вручную тобишь командой Line на PictureBox
Сейчас набросаю простой пример, может станет немного понятнее
0
Почетный модератор
21363 / 9097 / 1082
Регистрация: 11.04.2010
Сообщений: 11,014
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, будет более сглаженный график (второй рисунок)
Миниатюры
Как построить оси координат на picturebox и на этих осях построить график функции   Как построить оси координат на picturebox и на этих осях построить график функции  
0
2 / 2 / 0
Регистрация: 26.05.2014
Сообщений: 46
26.05.2014, 20:36  [ТС] 6
Спасибо, а можно выделить код для обозначения синих осей?
0
Почетный модератор
21363 / 9097 / 1082
Регистрация: 11.04.2010
Сообщений: 11,014
26.05.2014, 20:37 7
Цитата Сообщение от ricudo1995 Посмотреть сообщение
код для обозначения синих осей?
Это метод
Цитата Сообщение от Памирыч Посмотреть сообщение
VB.NET
1
CorelDraw
0
2 / 2 / 0
Регистрация: 26.05.2014
Сообщений: 46
26.05.2014, 20:40  [ТС] 8
Еще раз спасибо, если будут траблы, обращусь в этой же ветке
0
2 / 2 / 0
Регистрация: 26.05.2014
Сообщений: 46
26.05.2014, 21:16  [ТС] 9
Памирыч, может посмотрите проект малость и скажете ошибки...
В ворде код написанный в шестом бейсике, в проекте я переделал для 13
Вложения
Тип файла: rar WindowsApplication1111.rar (55.6 Кб, 52 просмотров)
Тип файла: docx Документ Microsoft Office Word.docx (12.4 Кб, 44 просмотров)
0
Почетный модератор
21363 / 9097 / 1082
Регистрация: 11.04.2010
Сообщений: 11,014
26.05.2014, 21:25 10
Увы и ах, у меня старенькая студия, такие проекты ей не по зубам.
К тому же у меня абсолютная неспособность к чтению чужого кода.

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

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

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

Ждите ответа, может, местные ребята поколдуют и помогут чем смогут.
Надеюсь
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.05.2014, 21:29
Помогаю со студенческими работами здесь

Построить на экране дисплея оси координат и график функции y=x на отрезке (-2;2)
Построить на экране дисплея оси координат и график функции y=x на отрезке (-2;2)

Вывести на экран оси координат с засечками с шагом 1, и построить график заданной функции
написать программу, которая выводит на экран оси координат с засечками с шагом 1, и строит график...

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

Построить на экране дисплея оси координат и график функций y=sin(x) на отрезке (-2П, 2П)
Построить на экране дисплея оси координат и график функций y=sin(x) на отрезке (-2П, 2П)


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru