Построить график функции - Visual Basic .NET

  1. Начало есть, построила только систему координат, а сам график не получается, функция во вложении.vb.net1 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 Public Class Form1 Dim Graph1 As Graphics Dim Pen1 As New Pen(Color.Black, 2) Dim Pen2 As New Pen(Color.Red, 2) Dim brush1 As New SolidBrush(Color.Black) Dim font1 As New Font("Arial", 10) Dim X, Y, Z As Single Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Graph1 = Me.PictureBox1.CreateGraphics() 'Рисуем шкалу координат 'По оcи X For X = -180 To 180 Step 90 Graph1.DrawString(X, font1, brush1, X + 180, 100) Next X 'По оcи Y For Y = -100 To 100 Step 50 Graph1.DrawString(Y / 50, font1, brush1, 180, 100 - Y) Next Y 'Преобразование компьютерной системы координат в математическую 'Поворот оси Y Graph1.ScaleTransform(1, -1) 'Сдвиг по осям X и Y Graph1.TranslateTransform(180, -100) 'Рисование осей математической системы координат 'Ось X Graph1.DrawLine(Pen1, -180, 0, 180, 0) 'Ось Y Graph1.DrawLine(Pen1, 0, -100, 0, 100) 'Делаем засечки по осям координат 'По оси X For X = -180 To 180 Step 90 Graph1.DrawLine(Pen1, X, -5, X, 5) Next X 'По оси Y For Y = -100 To 100 Step 50 Graph1.DrawLine(Pen1, -5, Y, 5, Y) Next Y End Sub End Class


textual

Код:

For x=-1 to 1 step 0.1
   y=iif(x<=0,sin(x)-2*cos(x),(1+x^2)^0.5)
   ' тут строй точку на графике по координатам и начиная со второй соединяй линией с предыдущей
next


Похожие ответы
  1. Вопрос глупейший впринципе. В таймере каждую секунду отображаю через графику время на панели. чтобы время менялось приходится делать PanelRefresh или Validate. При это панель ппц как мерцает. Как сие исправить, или лучше использовать? рисую оч простоvb.net1 2 3 4 5 6 7 8 9             'Dim dt As TimeSpan = Now.TimeOfDay             'Dim dt_after As TimeSpan = New TimeSpan(NumericUpDown2.Value, NumericUpDown1.Value, 59)             'Dim stime As String = dt_after.Subtract(dt).ToString             'Dim gr As Graphics = Graphics.FromHwnd(GroupBox6.Handle)             ''gr.Clear(Color.FromKnownColor(KnownColor.Control))             'Dim siz As SizeF = gr.MeasureString(stime, New Font("Arial", 12, FontStyle.Regular))             'Dim br As New Drawing2D.LinearGradientBrush(New Rectangle(1000, 10, 1000, 1000), Color.Black, Color.Yellow, 10)             'gr.DrawString(stime.Substring(0, 11), New Font("Arial", 12, FontStyle.Bold), br, (Me.GroupBox6.Width - siz.Width) \ 2, (Me.GroupBox6.Height - siz.Height) \ 2)             'gr.Dispose()

  1. 1. Постройте треугольник с вершинами (100,100), (150,100), (80,170). 2. Постройте прямоугольник с вершинами (80,80), (170, 80), (170, 150), (80, 150)

  1. Прошу помощи, так как с графикой не силен Создать программу для построения графика функции y=2x, вывод может быть куда угодно

  1. Ребят, у меня тут проблема, я новичок в программировании и не могу понять как построить график для квадратичной функции на VB. Так выглядит код на данный момент:vb.net1 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 Public Class Form1       Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click         Dim a, b, c, d, x1, x2, i, s As Double         Dim x As Single         Dim y As Double         a = TextBox1.Text         b = TextBox2.Text         c = TextBox3.Text         d = b ^ 2 - 4 * a * c         s = Math.Sqrt(d)         If (s > 0) Then             x1 = Math.Round((-b + s) / (2 * a), 3)             x2 = Math.Round((-b - s) / (2 * a), 3)             MsgBox("Дискриминант=" + Str(d) + vbCrLf + "x1=" + Str(x1) + vbCrLf + "x2=" + Str(x2))         ElseIf (s = 0) Then             x1 = Math.Round((-b) / (2 * a), 3)             MsgBox("Дискриминант =" + Str(d) + vbCrLf + "x1=x2=" + Str(x1) + vbCrLf)         Else             MsgBox("Дискриминант меньше 0")         End If       End Sub       Private Sub PictureBox1_Click(sender As Object, e As EventArgs) Handles PictureBox1.Click       End SubПомогите пожалуйста с остальным кодом, буду очень благодарен

  1. Помогите пожалуйста Сделать работающий график а то этот график не правильный Кликните здесь для просмотра всего текста vb.net1 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 131 132 133 134 135 136 137 138 139 140 Public Class Form1       Dim Graph1 As Graphics       Dim Pen1 As New Pen(Color.Black, 2)       Dim Pen2 As New Pen(Color.Black, 1)       Dim brush1 As New SolidBrush(Color.Black)       Dim font1 As New Font("times new roman", 12)       Dim X, Y, a1, a2, b1, b2, c1, c2, k1, k2, m1, m2, d, z1, z2, x1, y1 As Single       Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load           Label1.Text = "Введите данные"           Label2.Text = "X1+"           Label3.Text = "X2="           Label4.Text = "X1+"           Label5.Text = "X2="           Label6.Text = ""           Label7.Text = ""           Label8.Text = ""           Button1.Text = "Решить и построить график"       End Sub       Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click           Graph1 = Me.PictureBox1.CreateGraphics()           For X = -15 To 15 Step 3               Graph1.DrawString(X, font1, brush1, X * 10 + 150, 150)           Next X           For Y = -15 To 150 Step 3               Graph1.DrawString(Y, font1, brush1, 150, 150 - Y * 10)           Next Y           Graph1.ScaleTransform(1, -1)           Graph1.TranslateTransform(150, -150)           Graph1.DrawLine(Pen1, -150, 0, 150, 0)           Graph1.DrawLine(Pen1, 0, -150, 0, 150)           For X = -150 To 150 Step 30               Graph1.DrawLine(Pen2, X, -1, X, 1)           Next X           For Y = -150 To 150 Step 30               Graph1.DrawLine(Pen2, -1, Y, 1, Y)           Next Y           a1 = TextBox1.Text           b1 = TextBox2.Text           c1 = TextBox5.Text           a2 = TextBox3.Text           b2 = TextBox4.Text           c2 = TextBox6.Text           k1 = (-1) * (a1 / b1)           m1 = (-1) * (c1 / b1)           k2 = (-1) * (a2 / b2)           m2 = (-1) * (c2 / b2)           d = -(a2 / a1)           a2 = a2 + (a1 * d)           b2 = b2 + (b1 * d)           c2 = c2 + (c1 * d)           z2 = c2 / b2           z1 = (c1 - (z2 * b1)) / a1           Label6.Text = "X1="           Label7.Text = "X2=" + z2.ToString           Label8.Text = "Из решения методом Гаусса получено:"           For X = -150 To 150 Step 1               Y = k1 * X + m1               y1 = k1 * (X + 1) + m1               Graph1.DrawLine(Pen2, X * 10, Y * 10, (X + 1) * 10, y1 * 10)           Next X           For X = -150 To 150 Step 1               Y = k2 * X + m2               y1 = k2 * (X + 1) + m2               Graph1.DrawLine(Pen2, X * 10, Y * 10, (X + 1) * 10, y1 * 10)           Next X       End Sub       Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged       End Sub       Private Sub Label6_Click(sender As Object, e As EventArgs) Handles Label6.Click       End Sub End Class График так должен выглядеть помагите пожалуйста очень надо

  1. Всем, доброго дня! Вопрос в следующем, рассчитываю функцию и строю кривую при помощи Chart, но каждый раз при пересчете старая кривая сохраняется и поверх рисуется новая, как задать чтобы график обновлялся? Заранее благодарю

  1. Доброе время суток, знатоки! Есть данные которые берутся из базу 100 - 01.04.2016 30 - 02.04.2016 50 - 03.04.2016 и т.д. Как построить примитивный график для отображения данных взятых из базы? что то на подобии этого как на картинке?

  1. Всем привет, как с помощью ZedGraph или что то другого сделать живой график. К примеру есть некий баланс, он меняется каждую секунду, как это отобразить на графике.

  1. Как поправить код, чтобы значение X сравнивалось один раз? Сейчас цикл берет измененные значения X. От этого результат не верный.vb.net1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 Imports System.Math Public Class MainForm     Private Function Y(ByVal x As Single) As Single         If x > 1 Then Y = Exp(x)         If x < 0 Then Y = 2 * x - 1         If x <= 1 And x >= 0 Then Y = -1     End Function     Private Sub CaclBtn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CaclBtn.Click         ResEdit.Text = ""         Dim x As Single, a As Single, b As Single, h As Single, yy As Single         a = CDbl(AEdit.Text)         b = CDbl(BEdit.Text)         h = CSng(HEdit.Text)         x = a         While x <= b             yy = Y(x)             ResEdit.Text = ResEdit.Text + "x = " + CStr(x) + ", y(x) = " + CStr(yy) + vbNewLine             x = x + h         End While     End Sub     Private Sub ResEdit_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ResEdit.TextChanged     End Sub End Class Спасибо за помощь!

  1. Доброго времени суток! В программе при каждом срабатывании таймера должна перерисовываться ломаная линия из 500 точек. При этом другие графические элементы должны сохраниться. Я написал такой код (g - объект Graphics):vb.net1 2 3 4 5 6 7 g.Clear(Color.White)         g.DrawLines(pn, points)         g.DrawLine(pn, 300, 100, 300, 600)         g.DrawLine(pn, 100, 100, 300, 100)         g.DrawLine(pn, 100, 600, 300, 600)         g.DrawLine(pn, 200, 350, 300, 350)         g.DrawLine(pn2, 200, 550, 300, 550)points содержит 500 точек, координаты которых меняются при каждом проходе. Эта ломаная долго отрисовывается, соответсвенно последующие отрисовываемые линии мерцают на белом фоне. Может можно решить эту задачу без очистки фона с помощью .Clear(Color.White)?