实例介绍
【实例简介】
【实例截图】
''' <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
【核心代码】
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论