Как создать оси координат и рисовать на них? - Visual Basic .NET

Узнай цену своей работы

Формулировка задачи:

Ситуация такая: нужно как - то построить оси координат (-6 до 6), по y (-2 до 2), как то нарисовать любой график, считать точки Y в данной точке X и потом считать интегралл с этих точек. Может кто сталкивался с подобным? Я сижу в тупике, голова кружится, листаю литературу и сайты не могу найти. Спасибо за помощь! Это все на языке VB.Net.

Решение задачи: «Как создать оси координат и рисовать на них?»

textual
Листинг программы
  1. Public Class Form1
  2.     Private xmin, xmax, ymin, ymax, w, h As Integer
  3.     Private bmp As Bitmap
  4.     Private g As Graphics
  5.     Private pnAxis, pnGraphics As Pen
  6.     Private pnt As List(Of PointF), pp As PointF
  7.     Private isDraw As Boolean
  8.     Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
  9.         xmin = -6 : xmax = 6 : ymin = -2 : ymax = 2
  10.         w = PictureBox1.Width
  11.         h = PictureBox1.Height
  12.         bmp = New Bitmap(w, h, PictureBox1.CreateGraphics())
  13.         PictureBox1.Enabled = False
  14.         pnAxis = New Pen(Brushes.Blue, -1)
  15.         pnGraphics = New Pen(Brushes.Red, 2)
  16.         Button1.Enabled = False
  17.         Label2.Text = "min = " & xmin.ToString
  18.         Label3.Text = "max = " & xmax.ToString
  19.         Label5.Text = "min = " & ymin.ToString
  20.         Label4.Text = "max = " & ymax.ToString
  21.         Label8.Text = ""
  22.     End Sub
  23.     Private Sub CreateGraphics_Click(sender As System.Object, e As System.EventArgs) Handles Button3.Click
  24.         PictureBox1.Enabled = True
  25.         gettingStartedCanvas()
  26.         Button1.Enabled = True
  27.         Label8.Text = ""
  28.     End Sub
  29.     Private Sub GetIntegral_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
  30.         Dim kx As Double = w / 2 / xmax
  31.         Dim ky As Double = h / 2 / ymax
  32.         Dim p As PointF
  33.         For i = 0 To pnt.Count - 1
  34.             p = pnt(i)
  35.             p.X -= w / 2
  36.             p.Y -= h / 2
  37.             p.Y = -p.Y
  38.             p.X /= kx
  39.             p.Y /= ky
  40.             pnt(i) = p
  41.         Next
  42.         'вычисляем приближенно по методу трапеций
  43.         Dim sum As Double = 0.0
  44.         For i = 1 To pnt.Count - 1
  45.             sum += (pnt(i - 1).Y + pnt(i).Y) / 2 * (pnt(i).X - pnt(i - 1).X)
  46.         Next
  47.         Label8.Text = sum.ToString
  48.         Button1.Enabled = False
  49.         PictureBox1.Enabled = False
  50.     End Sub
  51.     Private Sub gettingStartedCanvas()
  52.         g = Graphics.FromImage(bmp)
  53.         g.Clear(PictureBox1.BackColor)
  54.         g.DrawLine(pnAxis, New Point(w / 2, 0), New Point(w / 2, h))
  55.         g.DrawLine(pnAxis, New Point(0, h / 2), New Point(w, h / 2))
  56.         PictureBox1.Image = bmp
  57.         g.Dispose()
  58.     End Sub
  59.     Private Sub PictureBox1_MouseDown(sender As System.Object, e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseDown
  60.         Dim x As Integer = e.Location.X
  61.         Dim y As Integer = e.Location.Y
  62.         If x <> 0 Then x = 0
  63.         pnt = New List(Of PointF)
  64.         pp = New PointF(x, y)
  65.         pnt.Add(pp)
  66.         isDraw = True
  67.         g = Graphics.FromImage(bmp)
  68.     End Sub
  69.     Private Sub PictureBox1_MouseUp(sender As System.Object, e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseUp
  70.         If Not isDraw Then Exit Sub
  71.         Dim x As Integer = e.Location.X
  72.         Dim y As Integer = e.Location.Y
  73.         If x <> w Then x = w
  74.         pnt.Add(New PointF(x, y))
  75.         g.DrawLine(pnGraphics, pp, pnt(pnt.Count - 1))
  76.         isDraw = False
  77.         g.Dispose()
  78.         PictureBox1.Image = bmp
  79.     End Sub
  80.     Private Sub PictureBox1_MouseMove(sender As System.Object, e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseMove
  81.         If isDraw Then
  82.             Dim x As Integer = e.Location.X
  83.             Dim y As Integer = e.Location.Y
  84.             If x <= pp.X Then Exit Sub
  85.             Dim p As PointF = New PointF(x, y)
  86.             g.DrawLine(pnGraphics, pp, p)
  87.             pnt.Add(p)
  88.             pp = p
  89.             PictureBox1.Image = bmp
  90.         End If
  91.     End Sub
  92. End Class

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.727 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы