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
|
Imports System.Drawing.Drawing2D
Public Class Form1
Private Sub Panel1_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Panel1.Paint
Dim gr As Graphics = e.Graphics
gr.SmoothingMode = SmoothingMode.HighQuality
drawPath(gr)
End Sub
Private Sub drawPath(ByVal gr As Graphics)
Dim angle As Single
Dim pt As PointF
Dim PostivePts As New List(Of PointF)
Dim NegativePts As New List(Of PointF)
For i As Integer = 0 To 718
angle = i * Math.PI / 180
pt = New PointF()
pt.X = angle * 50.0
pt.Y = 100 * Math.Sin(angle)
pt.Y += Panel1.Height / 2
If pt.Y > Panel1.Height / 2 Then
PostivePts.Add(pt)
Else
NegativePts.Add(pt)
End If
Next
Using path As New GraphicsPath
path.AddCurve(PostivePts.ToArray)
gr.DrawPath(Pens.Red, path)
path.Reset()
path.AddCurve(NegativePts.ToArray)
gr.DrawPath(Pens.Green, path)
End Using
Dim p0 As PointF = PostivePts(0)
Dim p1 As PointF = NegativePts(NegativePts.Count - 1)
Using myPen As New Pen(Brushes.DarkBlue, 2.0)
myPen.DashStyle = DashStyle.DashDot
gr.DrawLine(myPen, p0, p1)
End Using
End Sub
Private Sub Form1_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Resize
Panel1.Invalidate()
End Sub
End Class |
Partager