请教一个MSChart组件画曲线的问题

石头子 2004-11-10 05:31:06
在显示曲线的时候,如果x轴有10个刻度,但我只有3个刻度上的数据,后边的刻度,mschart会自动延长显示(错误的),有什么方法能解决?
x轴刻度是不能变化的,也就是后边的刻度如果没有数据,就不显示后边的曲线

明天来了,再结帖!
多谢大家!
...全文
306 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
bluegirl2003 2004-11-11
  • 打赏
  • 举报
回复
TeeChart 控件 ,不错
efengxu 2004-11-11
  • 打赏
  • 举报
回复
建议用picturebox控件,自己画曲线!
lyxhappy 2004-11-11
  • 打赏
  • 举报
回复
你直接将X轴刻度设为三个不行了!
junki 2004-11-11
  • 打赏
  • 举报
回复
'这里有一个我自己写的函数,picturebox控件画曲线,你看一看吧.

Public Sub PictureLine(Optional ByVal ScaleX As Long = 100, Optional ByVal ScaleY As Long = 100, _
Optional ByVal StartValueX As Long = 0, Optional ByVal StartValueY As Long = 0, _
Optional ByVal MaxValueX As Long = 500, Optional ByVal MaxValueY As Long = 1000, _
Optional ByVal ScaleAmp As Single = 300, Optional ByVal StartAmp As Single = 0, _
Optional ByVal EndAmp As Single, Optional ByVal ItemType As Integer = 1)

Dim IndexX As Long
Dim IndexY As Long
Dim NumY As Integer
Dim NumX As Integer
Dim MaxY As Long
Dim i As Long, ii As Long, OldFontSize
Dim LastAmp As Single

LastAmp = EndAmp
IndexX = 5
IndexY = 5
' Width = 8640: Height = 5760 ' 按??置窗体大小
AutoRedraw = -1 ' 打?AutoRedraw
OldFontSize = FontSize ' 保持?的字体大小
BackColor = QBColor(7) ' ?背景?置?灰色
Scale (0, 120)-(130, 0) ' ?定自定?座?系?

'Y?与刻度?
Line (20, 10)-(20, 115), RGB(0, 0, 255), BF
ii = 1
For i = StartValueY To MaxValueY Step ScaleY
If i <> 0 Then
Line (20, 10 + IndexY * ii)-(22, 10 + IndexY * ii), RGB(0, 0, 255), BF ' 每隔 10 ??位划尺寸??
CurrentX = CurrentX - 9
CurrentY = CurrentY + 1.5 ' 移?光?位置
Print i ' Print scale mark value on left
ii = ii + 1
End If
Next i
MaxY = i - StartValueY + 100

If ItemType = 1 Or ItemType = 2 Then
'Amp Chart
Line (10, 10)-(10, 115), RGB(0, 0, 255), BF
ii = 1

If LastAmp > ScaleAmp * 20 Then
LastAmp = ScaleAmp * 20
ElseIf (LastAmp < ScaleAmp * 20) And (LastAmp > Int(LastAmp / ScaleAmp) * ScaleAmp) Then
LastAmp = LastAmp + ScaleAmp
End If

For i = 0 To LastAmp Step ScaleAmp
If i <> 0 Then
Line (10, 10 + IndexY * ii)-(12, 10 + IndexY * ii), RGB(0, 0, 255), BF ' 每隔 10 ??位划尺寸??
CurrentX = CurrentX - 9
CurrentY = CurrentY + 1.5 ' 移?光?位置
Print i ' Print scale mark value on left
ii = ii + 1
End If
Next i
CurrentX = 4: CurrentY = 118
Print "(mA)"
End If

'X?与刻度?
ii = 1
Line (20, 10)-(125, 10), RGB(0, 0, 255), BF
For i = StartValueX To MaxValueX Step ScaleX
If i <> 0 Then
Line (20 + IndexX * ii, 10)-(20 + IndexX * ii, 12), RGB(0, 0, 255), BF
CurrentY = CurrentY - 3 ' 移?光?位置
CurrentX = CurrentX - 3
Print i ' ?尺寸??值打印在下?
ii = ii + 1
End If
Next i

CurrentX = 15.5: CurrentY = 10.5
Print 0

CurrentX = 14: CurrentY = 118
If ItemType = 3 Then
Print "(mA)"
ElseIf ItemType = 1 Or ItemType = 2 Then
Print "(mV)"
End If

' CurrentX = 1: CurrentY = 111
' Print "△V"
CurrentX = 121: CurrentY = 9.5
Print "(mSec)"
' CurrentX = 115: CurrentY = 7.5
' Print "△T"

NumY = CInt((MaxValueY - StartValueY) / ScaleY)
NumX = CInt((MaxValueX - StartValueX) / ScaleX)

If ItemType = 2 Then 'UVP Test
ii = 0
For i = MaxValueY To StartValueY Step -ScaleY
If CInt(CurrentX) < NumX * IndexX + 20 Then
Line (20 + ii * IndexX, 10 + (NumY - ii + 1) * IndexY)-(20 + (ii + 1) * IndexX, 10 + (NumY - ii + 1) * IndexY), RGB(255, 0, 0), BF ' 第一??色?
Else
Exit Sub
End If

If CInt(CurrentY) > 10 + IndexY And CInt(CurrentX) <> NumX * IndexX + 20 Then
Line (20 + (ii + 1) * IndexX, 10 + (NumY - ii + 1) * IndexY)-(20 + (ii + 1) * IndexX, 10 + (NumY - ii) * IndexY), RGB(255, 0, 0), BF ' 第一??色?
Else
Exit For
End If
ii = ii + 1
Next i

'Amp Line
Line (10, 10 + StartAmp / ScaleAmp * IndexY)-(20 + (NumX - 1) * IndexX, 10 + StartAmp / ScaleAmp * IndexY), RGB(0, 255, 0), BF
Line (20 + (NumX - 1) * IndexX, 10 + StartAmp / ScaleAmp * IndexY)-(20 + (NumX - 1) * IndexX, 10), RGB(0, 255, 0), BF

CurrentX = 20 + 0.5: CurrentY = 13 + (NumY + 1) * IndexY
Print "〉T"
CurrentX = 20 + 5.5: CurrentY = 9 + (NumY + 1) * IndexY
Print "〉V"

CurrentX = 50: CurrentY = 5
Me.Font.Size = 10
Print "??玂?代?"

ElseIf ItemType = 1 Or ItemType = 3 Then 'OVP Test Or SCP Test

ii = 0
For i = MaxValueY To StartValueY Step -ScaleY
If CInt(CurrentX) < NumX * IndexX + 20 And CInt(CurrentY) <= NumY * IndexY + 15 Then
Line (20 + ii * IndexX, 10 + IndexY * (ii + 1))-(20 + (ii + 1) * IndexX, 10 + IndexY * (ii + 1)), RGB(255, 0, 0), BF ' 第一??色?
Else
Exit For
End If

If CInt(CurrentY) < (NumY + 1) * IndexY + 10 And CInt(CurrentX) < NumX * IndexX + 20 Then
Line (20 + (ii + 1) * IndexX, 10 + IndexY * (ii + 1))-(20 + (ii + 1) * IndexX, 10 + IndexY * (ii + 2)), RGB(255, 0, 0), BF ' 第一??色?
Else
Exit For
End If
ii = ii + 1
Next i

If ItemType = 1 Then
'Amp Line
Line (10, 10 + StartAmp / ScaleAmp * IndexY)-(20 + (NumX - 1) * IndexX, 10 + StartAmp / ScaleAmp * IndexY), RGB(0, 255, 0), BF
Line (20 + (NumX - 1) * IndexX, 10 + StartAmp / ScaleAmp * IndexY)-(20 + (NumX - 1) * IndexX, 10 + EndAmp / ScaleAmp * IndexY), RGB(0, 255, 0), BF
Line (20 + (NumX - 1) * IndexX, 10 + EndAmp / ScaleAmp * IndexY)-(100, 10 + EndAmp / ScaleAmp * IndexY), RGB(0, 255, 0), BF
End If

CurrentX = 20 + 0.5: CurrentY = 10 + IndexY
Print "〉T"


CurrentX = 50: CurrentY = 5
Me.Font.Size = 10
If ItemType = 1 Then
Print "???玂?代?"
CurrentX = 20 + IndexX: CurrentY = 10 + IndexY + 3.5
Print "〉V"
ElseIf ItemType = 3 Then
Print "???玂?代?"
CurrentX = 20 + IndexX: CurrentY = 10 + IndexY + 3.5
Print "〉A"
End If

End If

End Sub
viena 2004-11-10
  • 打赏
  • 举报
回复
看不懂
a达哥a 2004-11-10
  • 打赏
  • 举报
回复
那就设定它的X轴刻度为三啊!

1,451

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧