📄 clockd.vb
字号:
Imports System.Drawing
Imports system.Drawing.Imaging
Imports System.math
Imports System.Web.UI
Imports System.Web.UI.WebControls
Namespace mxj
<ToolboxData("<{0}:clock runat=""server"" />")> _
Public Class Clock
Inherits System.Web.UI.Control
Implements INamingContainer
Private HourTime As Integer = 12
Private MinuteTime As Integer = 45
Private ImageSize As Integer = 100
Property Size() As Integer
Get
Return ImageSize
End Get
Set(ByVal value As Integer)
ImageSize = value
End Set
End Property
WriteOnly Property time() As DateTime
Set(ByVal value As DateTime)
HourTime = Integer.Parse(value.ToString("%H"))
MinuteTime = Integer.Parse(value.ToString("%m"))
End Set
End Property
Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter)
'MyBase.Render(writer)
Page.Response.ContentType = "image/gif"
'If Not Page.Request.QueryString("width") Is Nothing Then
' ImageSize = Integer.Parse(Page.Request.QueryString("width"))
'Else
' ImageSize = 100
'End If
'If Not Page.Request.QueryString("hour") Is Nothing Then
' HourTime = Integer.Parse(Page.Request.QueryString("hour"))
'Else
' HourTime = 12
'End If
'If Not Page.Request.QueryString("minute") Is Nothing Then
' MinuteTime = Integer.Parse(Page.Request.QueryString("minute"))
'Else
' MinuteTime = 30
'End If
'create canvas
Dim ImageBitmap As New Bitmap(ImageSize, ImageSize)
Dim imageGraphics As Graphics
imageGraphics = Graphics.FromImage(ImageBitmap)
imageGraphics.Clear(Color.White)
imageGraphics.SmoothingMode = Drawing2D.SmoothingMode.AntiAlias
'create the two-tone clock face
Dim ClockFacePen As New Pen(Color.Black, 1)
Dim ClockFacePen2 As New Pen(Color.LightBlue, 2)
imageGraphics.DrawArc(ClockFacePen, 2, 2, (ImageSize - 4), (ImageSize - 4), 45.0F, 180.0F)
imageGraphics.DrawArc(ClockFacePen2, 2, 2, (ImageSize - 4), (ImageSize - 4), 225.0F, 180.0F)
'add some marks to help us more-accurately tell the time
Dim marksize As Single = ImageSize / 40
Dim count As Integer
Dim x As Single
Dim y As Single
Dim Angle As Single
For count = 1 To 12
Angle = 30 * count * PI / 180
'x = (ImageSize / 2) + (0.9 * (ImageSize / 2) * Sin(Angle))
'x = (ImageSize / 2) - (0.9 * (ImageSize / 2) * Cos(Angle))
'imageGraphics.DrawEllipse(Pens.Red, (x - (marksize / 2)), (y - (marksize / 2)), marksize, marksize)
'Angle = 30 * count
x = (ImageSize / 2) + Sin(Angle) * (ImageSize / 2) * 0.9
y = (ImageSize / 2) - Cos(Angle) * (ImageSize / 2) * 0.9
imageGraphics.DrawEllipse(Pens.Red, x, y, marksize, marksize)
Next
Dim CenterClockPoint As New Point(ImageSize / 2, ImageSize / 2)
'Draw the minuteHand
Dim minuteX As Double
Dim minuteY As Double
Dim minuteAngle As Double
minuteAngle = (6 * MinuteTime) * PI / 180
minuteX = (ImageSize / 2) + (0.9 * (ImageSize / 2) * Sin(minuteAngle))
minuteY = (ImageSize / 2) - (0.9 * (ImageSize / 2) * Cos(minuteAngle))
Dim MinuteHandPoint As New Point(minuteX, minuteY)
imageGraphics.DrawLine(Pens.Black, CenterClockPoint, MinuteHandPoint)
'Draw the hourHand
Dim hourX As Double
Dim hourY As Double
Dim hourAngle As Double
hourAngle = ((30 * (MinuteTime / 60)) + (30 * HourTime)) * PI / 180
hourX = (ImageSize / 2) + (0.6 * (ImageSize / 2) * Sin(hourAngle))
hourY = (ImageSize / 2) - (0.6 * (ImageSize / 2) * Cos(hourAngle))
Dim hourHandPoint As New Point(hourX, hourY)
imageGraphics.DrawLine(Pens.Black, CenterClockPoint, hourHandPoint)
'output the image
'ImageBitmap.Save(Page.Response.OutputStream, ImageFormat.Gif)
Dim fileNmae As String = Page.Server.MapPath("") & "\clock.gif"
ImageBitmap.Save(fileNmae, ImageFormat.Gif)
writer.AddAttribute("src", "clock.gif")
writer.RenderBeginTag("img")
writer.RenderEndTag()
End Sub
End Class
End Namespace
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -