基本信息
源码名称:XY曲线绘制控件
源码大小:0.50M
文件格式:.rar
开发语言:ASP
更新时间:2021-07-24
   友情提示:(无需注册或充值,赞助后即可获取资源下载链接)

     嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300

本次赞助数额为: 2 元 
   源码介绍






''' <summary>

    ''' 画X轴刻度
    ''' </summary>
    ''' <param name="Paint_g"></param>
    ''' <param name="XY_Pen"></param>
    Private Sub PaintX_ScalePlate(Paint_g As Graphics, XY_Pen As Pen)
        Dim Scale_Format As New StringFormat(StringFormatFlags.NoClip)
        Scale_Format.LineAlignment = StringAlignment.Near
        Scale_Format.Alignment = StringAlignment.Center
        Dim DrawBrush As New SolidBrush(Color.Black)
        Dim X_ScalePlate_StartPoint As PointF
        Dim X_ScalePlate_EndPoint As PointF
        If XisDateTime = False Then
            For I = X_Start To X_End Step X_Min
                If I Mod (10 * X_Min) = 0 AndAlso I <> 0 Then
                    X_ScalePlate_StartPoint = New PointF((Origin.X I) * PerXPoint_Pix() YScaleSize.Width, Origin.Y * PerYPoint_Pix() - XScaleplate_Height * 2 Me.FontHeight)
                    X_ScalePlate_EndPoint = New PointF((Origin.X I) * PerXPoint_Pix() YScaleSize.Width, Origin.Y * PerYPoint_Pix() Me.FontHeight)
                    Dim recSize As SizeF = Paint_g.MeasureString(I.ToString, Me.Font)
                    Dim rect As RectangleF = New RectangleF(X_ScalePlate_EndPoint.X - recSize.Width / 2, X_ScalePlate_EndPoint.Y, recSize.Width, recSize.Height)
                    Paint_g.DrawString(I.ToString, Me.Font, DrawBrush, (rect), Scale_Format)
                Else
                    X_ScalePlate_StartPoint = New PointF((Origin.X I) * PerXPoint_Pix() YScaleSize.Width, Origin.Y * PerYPoint_Pix() - XScaleplate_Height Me.FontHeight)
                    X_ScalePlate_EndPoint = New PointF((Origin.X I) * PerXPoint_Pix() YScaleSize.Width, Origin.Y * PerYPoint_Pix() Me.FontHeight)
                End If
                If I = 0 Then
                    X_ScalePlate_StartPoint = New PointF((Origin.X I) * PerXPoint_Pix() YScaleSize.Width, Origin.Y * PerYPoint_Pix() - XScaleplate_Height * 2 Me.FontHeight)
                    X_ScalePlate_EndPoint = New PointF((Origin.X I) * PerXPoint_Pix() YScaleSize.Width, Origin.Y * PerYPoint_Pix() Me.FontHeight)
                    Dim recSize As SizeF = Paint_g.MeasureString(I.ToString, Me.Font)
                    Dim rect As RectangleF = New RectangleF(X_ScalePlate_EndPoint.X, X_ScalePlate_EndPoint.Y, recSize.Width, recSize.Height)
                    Paint_g.DrawString(I.ToString, Me.Font, DrawBrush, (rect), Scale_Format)
                End If
                XY_Pen.Color = Color.FromArgb(255, Color.Black)
                Paint_g.DrawLine(XY_Pen, X_ScalePlate_StartPoint, X_ScalePlate_EndPoint)
                If DrawGrid AndAlso I Mod GridOffset = 0 Then
                    If I Mod 2 = 0 Then
                        XY_Pen.Color = Color.FromArgb(60, DrawGridColor)
                    Else
                        XY_Pen.Color = Color.FromArgb(10, DrawGridColor)
                    End If
                    Dim X_ScalePlateLineStartPoint = New PointF((Origin.X I) * PerXPoint_Pix() YScaleSize.Width, Origin.Y * PerYPoint_Pix() - XScaleplate_Height * 2 Me.FontHeight)
                    Dim X_ScalePlateLineEndPoint = New PointF((Origin.X I) * PerXPoint_Pix() YScaleSize.Width, Me.FontHeight)
                    Paint_g.DrawLine(XY_Pen, X_ScalePlateLineStartPoint, X_ScalePlateLineEndPoint)
                End If
            Next
        ElseIf XisDateTime = True Then
            _X_Start = 0
            _X_End = (_X_EndTime - X_StartTime).TotalSeconds
            For I = X_Start To X_End Step X_Min
                If I Mod (10 * X_Min) = 0 AndAlso I <> 0 Then
                    X_ScalePlate_StartPoint = New PointF((Origin.X I) * PerXPoint_Pix() YScaleSize.Width, Origin.Y * PerYPoint_Pix() - XScaleplate_Height * 2 Me.FontHeight)
                    X_ScalePlate_EndPoint = New PointF((Origin.X I) * PerXPoint_Pix() YScaleSize.Width, Origin.Y * PerYPoint_Pix() Me.FontHeight)
                    Dim ScaleTime As String = DateAdd(DateInterval.Second, I, X_StartTime).ToString("yyyy-MM-dd HH:mm:ss")
                    Dim recSize As SizeF = Paint_g.MeasureString(ScaleTime, Me.Font)
                    Paint_g.TranslateTransform(X_ScalePlate_EndPoint.X recSize.Height / 2, X_ScalePlate_EndPoint.Y)
                    Paint_g.RotateTransform(90.0F, MatrixOrder.Prepend)
                    Dim rect As RectangleF = New RectangleF(0, 0, recSize.Width, recSize.Height)
                    Paint_g.DrawString(ScaleTime, Me.Font, DrawBrush, (rect), Scale_Format)
                    Paint_g.ResetTransform()
                Else
                    X_ScalePlate_StartPoint = New PointF((Origin.X I) * PerXPoint_Pix() YScaleSize.Width, Origin.Y * PerYPoint_Pix() - XScaleplate_Height Me.FontHeight)
                    X_ScalePlate_EndPoint = New PointF((Origin.X I) * PerXPoint_Pix() YScaleSize.Width, Origin.Y * PerYPoint_Pix() Me.FontHeight)
                End If
                If I = 0 Then
                    X_ScalePlate_StartPoint = New PointF((Origin.X I) * PerXPoint_Pix() YScaleSize.Width, Origin.Y * PerYPoint_Pix() - XScaleplate_Height * 2 Me.FontHeight)
                    X_ScalePlate_EndPoint = New PointF((Origin.X I) * PerXPoint_Pix() YScaleSize.Width, Origin.Y * PerYPoint_Pix() Me.FontHeight)
                    Dim ScaleTime As String = DateAdd(DateInterval.Second, I, X_StartTime).ToString("yyyy-MM-dd HH:mm:ss")
                    Dim recSize As SizeF = Paint_g.MeasureString(ScaleTime, Me.Font)
                    Paint_g.TranslateTransform(X_ScalePlate_EndPoint.X recSize.Height, X_ScalePlate_EndPoint.Y)
                    Paint_g.RotateTransform(90.0F, MatrixOrder.Prepend)
                    Dim rect As RectangleF = New RectangleF(0, 0, recSize.Width, recSize.Height)
                    Paint_g.DrawString(ScaleTime, Me.Font, DrawBrush, (rect), Scale_Format)
                    Paint_g.ResetTransform()
                End If
                XY_Pen.Color = Color.FromArgb(255, Color.Black)
                Paint_g.DrawLine(XY_Pen, X_ScalePlate_StartPoint, X_ScalePlate_EndPoint)
                If DrawGrid AndAlso I Mod GridOffset = 0 Then
                    If I Mod 2 = 0 Then
                        XY_Pen.Color = Color.FromArgb(60, DrawGridColor)
                    Else
                        XY_Pen.Color = Color.FromArgb(10, DrawGridColor)
                    End If
                    Dim X_ScalePlateLineStartPoint = New PointF((Origin.X I) * PerXPoint_Pix() YScaleSize.Width, Origin.Y * PerYPoint_Pix() - XScaleplate_Height * 2 Me.FontHeight)
                    Dim X_ScalePlateLineEndPoint = New PointF((Origin.X I) * PerXPoint_Pix() YScaleSize.Width, Me.FontHeight)
                    Paint_g.DrawLine(XY_Pen, X_ScalePlateLineStartPoint, X_ScalePlateLineEndPoint)
                End If
            Next
        End If
    End Sub
    ''' <summary>
    ''' 画Y轴刻度
    ''' </summary>
    ''' <param name="Paint_g"></param>
    ''' <param name="XY_Pen"></param>
    Private Sub PaintY_ScalePlate(Paint_g As Graphics, XY_Pen As Pen)
        Dim Scale_Format As New StringFormat(StringFormatFlags.NoClip)
        Scale_Format.LineAlignment = StringAlignment.Center
        Scale_Format.Alignment = StringAlignment.Far
        Dim DrawBrush As New SolidBrush(Color.Black)
        Dim Y_ScalePlate_StartPoint As PointF
        Dim Y_ScalePlate_EndPoint As PointF
        If YisDateTime = False Then
            For I = Y_Start To Y_End Step Y_Min
                If I Mod (10 * Y_Min) = 0 AndAlso I <> 0 Then
                    Y_ScalePlate_StartPoint = New PointF(Origin.X * PerXPoint_Pix() YScaleSize.Width, (Origin.Y - I) * PerYPoint_Pix() Me.FontHeight)
                    Y_ScalePlate_EndPoint = New PointF(Origin.X * PerXPoint_Pix() YScaleplate_Height * 2 YScaleSize.Width, (Origin.Y - I) * PerYPoint_Pix() Me.FontHeight)
                    Dim recSize As SizeF = Paint_g.MeasureString(I.ToString, Me.Font)
                    Dim rect As RectangleF = New RectangleF(Y_ScalePlate_StartPoint.X - recSize.Width, Y_ScalePlate_StartPoint.Y - recSize.Height / 2, recSize.Width, recSize.Height)
                    Paint_g.DrawString(I.ToString, Me.Font, DrawBrush, (rect), Scale_Format)
                Else
                    Y_ScalePlate_StartPoint = New PointF(Origin.X * PerXPoint_Pix() YScaleSize.Width, (Origin.Y - I) * PerYPoint_Pix() Me.FontHeight)
                    Y_ScalePlate_EndPoint = New PointF(Origin.X * PerXPoint_Pix() YScaleplate_Height YScaleSize.Width, (Origin.Y - I) * PerYPoint_Pix() Me.FontHeight)
                End If
                If I = 0 Then
                    Y_ScalePlate_StartPoint = New PointF(Origin.X * PerXPoint_Pix() YScaleSize.Width, (Origin.Y - I) * PerYPoint_Pix() Me.FontHeight)
                    Y_ScalePlate_EndPoint = New PointF(Origin.X * PerXPoint_Pix() YScaleplate_Height * 2 YScaleSize.Width, (Origin.Y - I) * PerYPoint_Pix() Me.FontHeight)
                    Dim recSize As SizeF = Paint_g.MeasureString(I.ToString, Me.Font)
                    Dim rect As RectangleF = New RectangleF(Y_ScalePlate_StartPoint.X - recSize.Width, Y_ScalePlate_StartPoint.Y - recSize.Height, recSize.Width, recSize.Height)
                    Paint_g.DrawString(I.ToString, Me.Font, DrawBrush, (rect), Scale_Format)
                End If
                XY_Pen.Color = Color.FromArgb(255, Color.Black)
                Paint_g.DrawLine(XY_Pen, Y_ScalePlate_StartPoint, Y_ScalePlate_EndPoint)
                If DrawGrid AndAlso I Mod GridOffset = 0 Then
                    If I Mod 2 = 0 Then
                        XY_Pen.Color = Color.FromArgb(60, DrawGridColor)
                    Else
                        XY_Pen.Color = Color.FromArgb(10, DrawGridColor)
                    End If
                    Dim Y_ScalePlateLineStartPoint = New PointF(Origin.X * PerXPoint_Pix() YScaleplate_Height * 2 YScaleSize.Width, (Origin.Y - I) * PerYPoint_Pix() Me.FontHeight)
                    Dim Y_ScalePlateLineEndPoint = New PointF(Me.Width, (Origin.Y - I) * PerYPoint_Pix() Me.FontHeight)
                    Paint_g.DrawLine(XY_Pen, Y_ScalePlate_StartPoint, Y_ScalePlateLineEndPoint)
                End If
            Next
        ElseIf YisDateTime = True Then
            _Y_Start = 0
            _Y_End = (_Y_EndTime - _Y_StartTime).TotalSeconds
            For I = Y_Start To Y_End Step Y_Min
                If I Mod (10 * Y_Min) = 0 AndAlso I <> 0 Then
                    Y_ScalePlate_StartPoint = New PointF(Origin.X * PerXPoint_Pix() YScaleSize.Width, (Origin.Y - I) * PerYPoint_Pix() Me.FontHeight)
                    Y_ScalePlate_EndPoint = New PointF(Origin.X * PerXPoint_Pix() YScaleplate_Height * 2 YScaleSize.Width, (Origin.Y - I) * PerYPoint_Pix() Me.FontHeight)
                    Dim ScaleTime As String = DateAdd(DateInterval.Second, I, Y_StartTime).ToString("yyyy-MM-dd HH:mm:ss")
                    Dim recSize As SizeF = Paint_g.MeasureString(ScaleTime, Me.Font)
                    Dim rect As RectangleF = New RectangleF(Y_ScalePlate_StartPoint.X - recSize.Width, Y_ScalePlate_StartPoint.Y - recSize.Height / 2, recSize.Width, recSize.Height)
                    Paint_g.DrawString(ScaleTime, Me.Font, DrawBrush, (rect), Scale_Format) 'RectangleF.op_Implicit(rect)
                Else
                    Y_ScalePlate_StartPoint = New PointF(Origin.X * PerXPoint_Pix() YScaleSize.Width, (Origin.Y - I) * PerYPoint_Pix() Me.FontHeight)
                    Y_ScalePlate_EndPoint = New PointF(Origin.X * PerXPoint_Pix() YScaleplate_Height YScaleSize.Width, (Origin.Y - I) * PerYPoint_Pix() Me.FontHeight)
                End If
                If I = 0 Then
                    Y_ScalePlate_StartPoint = New PointF(Origin.X * PerXPoint_Pix() YScaleSize.Width, (Origin.Y - I) * PerYPoint_Pix() Me.FontHeight)
                    Y_ScalePlate_EndPoint = New PointF(Origin.X * PerXPoint_Pix() YScaleplate_Height * 2 YScaleSize.Width, (Origin.Y - I) * PerYPoint_Pix() Me.FontHeight)
                    Dim ScaleTime As String = DateAdd(DateInterval.Second, I, Y_StartTime).ToString("yyyy-MM-dd HH:mm:ss")
                    Dim recSize As SizeF = Paint_g.MeasureString(ScaleTime, Me.Font)
                    Dim rect As RectangleF = New RectangleF(Y_ScalePlate_StartPoint.X - recSize.Width, Y_ScalePlate_StartPoint.Y - recSize.Height, recSize.Width, recSize.Height)
                    Paint_g.DrawString(ScaleTime, Me.Font, DrawBrush, (rect), Scale_Format)
                End If
                XY_Pen.Color = Color.FromArgb(255, Color.Black)
                Paint_g.DrawLine(XY_Pen, Y_ScalePlate_StartPoint, Y_ScalePlate_EndPoint)
                If DrawGrid AndAlso I Mod GridOffset = 0 Then
                    If I Mod 2 = 0 Then
                        XY_Pen.Color = Color.FromArgb(60, DrawGridColor)
                    Else
                        XY_Pen.Color = Color.FromArgb(10, DrawGridColor)
                    End If
                    Dim Y_ScalePlateLineStartPoint = New PointF(Origin.X * PerXPoint_Pix() YScaleplate_Height * 2 YScaleSize.Width, (Origin.Y - I) * PerYPoint_Pix() Me.FontHeight)
                    Dim Y_ScalePlateLineEndPoint = New PointF(Me.Width, (Origin.Y - I) * PerYPoint_Pix() Me.FontHeight)
                    Paint_g.DrawLine(XY_Pen, Y_ScalePlateLineStartPoint, Y_ScalePlateLineEndPoint)
                End If
            Next
        End If

    End Sub