vb.net 畫曲線圖
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim b As New System.Drawing.Bitmap(200, 200, PixelFormat.Format16bppRgb555)
Dim g As Graphics = Graphics.FromImage(b)
g.Clear(Color.White)
g.SmoothingMode = SmoothingMode.AntiAlias
Dim currtime As String
If Request.QueryString("time") = "" Then
currtime = Date.Now.ToString("T")
Else
currtime = Request.QueryString("time")
End If
Call drawClockFace(g)
Call drawClock(currtime, g)
Response.ContentType = "image/gif"
b.Save(Response.OutputStream, ImageFormat.Gif)
b.Dispose()
End Sub
Function drawClock(ByVal time As String, ByVal g As Graphics)
Dim hours, minutes As Integer
Dim timearray = Split(time, ":")
If UBound(timearray) >= 1 Then
hours = timearray(0)
minutes = timearray(1)
Else
Response.Write(time)
Response.End()
End If
Dim hx, hy As Integer
Dim hdegrees
Dim x, y As Integer
Dim degrees
Dim blackpen As New Pen(Color.Black, 3)
Dim bluepen As New Pen(Color.Blue, 3)
Dim redpen As New Pen(Color.Red, 1)
degrees = (90 - (minutes / 15) * 90) * (System.Math.PI / 180)
x = System.Math.Round(50 * System.Math.Cos(degrees))
y = -(System.Math.Round(50 * System.Math.Sin(degrees)))
hdegrees = (90 - ((hours / 3) + (minutes / 180)) * 90) * (System.Math.PI / 180)
hx = System.Math.Round(40 * System.Math.Cos(hdegrees))
hy = -(System.Math.Round(40 * System.Math.Sin(hdegrees)))
g.DrawLine(blackpen, 100, 100, hx + 100, hy + 100)
g.DrawLine(redpen, 100, 100, x + 100, y + 100)
Dim salign As New System.Drawing.StringFormat
salign.Alignment = StringAlignment.Center
g.DrawString(time, New Font("courier NEW", 12, FontStyle.Bold), Brushes.Black, 100, 160, salign)
End Function
Function drawClockFace(ByVal g As Graphics)
Dim x, y As Integer
Dim degrees, minutes
Dim bluepen As New Pen(Color.DarkBlue, 3)
For minutes = 0 To 60 Step 5
x = 0
y = 0
degrees = (90 - (minutes / 15) * 90) * (System.Math.PI / 180)
x = System.Math.Round(95 * System.Math.Cos(degrees))
y = -(System.Math.Round(95 * System.Math.Sin(degrees)))
g.DrawLine(bluepen, x + 100, y + 100, x + 101, y + 101)
Next
End Function
End Class
Dim b As New System.Drawing.Bitmap(200, 200, PixelFormat.Format16bppRgb555)
Dim g As Graphics = Graphics.FromImage(b)
g.Clear(Color.White)
g.SmoothingMode = SmoothingMode.AntiAlias
Dim currtime As String
If Request.QueryString("time") = "" Then
currtime = Date.Now.ToString("T")
Else
currtime = Request.QueryString("time")
End If
Call drawClockFace(g)
Call drawClock(currtime, g)
Response.ContentType = "image/gif"
b.Save(Response.OutputStream, ImageFormat.Gif)
b.Dispose()
End Sub
Function drawClock(ByVal time As String, ByVal g As Graphics)
Dim hours, minutes As Integer
Dim timearray = Split(time, ":")
If UBound(timearray) >= 1 Then
hours = timearray(0)
minutes = timearray(1)
Else
Response.Write(time)
Response.End()
End If
Dim hx, hy As Integer
Dim hdegrees
Dim x, y As Integer
Dim degrees
Dim blackpen As New Pen(Color.Black, 3)
Dim bluepen As New Pen(Color.Blue, 3)
Dim redpen As New Pen(Color.Red, 1)
degrees = (90 - (minutes / 15) * 90) * (System.Math.PI / 180)
x = System.Math.Round(50 * System.Math.Cos(degrees))
y = -(System.Math.Round(50 * System.Math.Sin(degrees)))
hdegrees = (90 - ((hours / 3) + (minutes / 180)) * 90) * (System.Math.PI / 180)
hx = System.Math.Round(40 * System.Math.Cos(hdegrees))
hy = -(System.Math.Round(40 * System.Math.Sin(hdegrees)))
g.DrawLine(blackpen, 100, 100, hx + 100, hy + 100)
g.DrawLine(redpen, 100, 100, x + 100, y + 100)
Dim salign As New System.Drawing.StringFormat
salign.Alignment = StringAlignment.Center
g.DrawString(time, New Font("courier NEW", 12, FontStyle.Bold), Brushes.Black, 100, 160, salign)
End Function
Function drawClockFace(ByVal g As Graphics)
Dim x, y As Integer
Dim degrees, minutes
Dim bluepen As New Pen(Color.DarkBlue, 3)
For minutes = 0 To 60 Step 5
x = 0
y = 0
degrees = (90 - (minutes / 15) * 90) * (System.Math.PI / 180)
x = System.Math.Round(95 * System.Math.Cos(degrees))
y = -(System.Math.Round(95 * System.Math.Sin(degrees)))
g.DrawLine(bluepen, x + 100, y + 100, x + 101, y + 101)
Next
End Function
End Class