mschart柱形图,如何添加一根水平线?

vansoft 2015-05-04 12:38:26
mschart已经显示柱形图了,现在需要添加一根水平线,表示基准值,
这样就很明显看到哪些超了,哪些没超。
...全文
1085 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
lcfjs 2016-01-30
  • 打赏
  • 举报
回复
你这个要求很简单啊,构建一个新的Series,只需要一个起始点和结束点,将数据源中的Y值设置为指定值,绑定上去就可以了
MSChart
赵4老师 2015-05-08
  • 打赏
  • 举报
回复
引用 11 楼 vansoft 的回复:
[quote=引用 10 楼 zhao4zhong1 的回复:] 将MSChart截图后用PaintPicture画到Picture1控件中,再Picture1.Line画一条线。 嫌画线画不准,用Picutre1.Point取指定位置像素颜色瞄准。
牛人牛想法。[/quote] 嘿嘿, 条条大路通罗马,关公面前耍大刀。
vansoft 2015-05-07
  • 打赏
  • 举报
回复
引用 10 楼 zhao4zhong1 的回复:
将MSChart截图后用PaintPicture画到Picture1控件中,再Picture1.Line画一条线。 嫌画线画不准,用Picutre1.Point取指定位置像素颜色瞄准。
牛人牛想法。
Tiger_Zhao 2015-05-06
  • 打赏
  • 举报
回复
MSChart 只能等分,如果你不接受最大值为170,那就只能换控件了。
vansoft 2015-05-06
  • 打赏
  • 举报
回复
好吧。我脑子确实有点不太好。 您的做法是用MajorDivision 来做基准值的线。 这个不太好。打个比方。最大值是100.最小值是0,85分以上是优秀。 85就是基准值。按您的做法,最大值就成170了。 怎么实现0到100中,85处有根水平线?
赵4老师 2015-05-06
  • 打赏
  • 举报
回复
将MSChart截图后用PaintPicture画到Picture1控件中,再Picture1.Line画一条线。 嫌画线画不准,用Picutre1.Point取指定位置像素颜色瞄准。
vansoft 2015-05-06
  • 打赏
  • 举报
回复
引用 8 楼 Tiger_Zhao 的回复:
MSChart 只能等分,如果你不接受最大值为170,那就只能换控件了。
好吧。自己用picture数组做柱子,Line做线。 组装一个。
Tiger_Zhao 2015-05-05
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 vansoft 的回复:]感谢 Tiger_Zhao

你的代码很棒,但还不是我要的效果。

我想要:
1、把MajorDivision和MinorDivision,全去了。
2、有一根水平线,显示在基准值位置。比如4,就是Y轴4值处,X方向一根线。[/Quote]
脑子长在那里是拿来用的!
BASE_VALUE = 4,Maximum = BASE_VALUE * 2,MajorDivision =2,MinorDivision 不要赋值。
vansoft 2015-05-05
  • 打赏
  • 举报
回复
引用 1 楼 zhao4zhong1 的回复:
试试在MsChart控件上方放一个Line控件。
位置不好控制,这根线是有值的。
vansoft 2015-05-05
  • 打赏
  • 举报
回复
感谢 Tiger_Zhao 你的代码很棒,但还不是我要的效果。 我想要: 1、把MajorDivision和MinorDivision,全去了。 2、有一根水平线,显示在基准值位置。比如4,就是Y轴4值处,X方向一根线。
Tiger_Zhao 2015-05-05
  • 打赏
  • 举报
回复

(IE上传不成功,换了个浏览器上传。)
Tiger_Zhao 2015-05-04
  • 打赏
  • 举报
回复
Option Explicit

Private Sub Form_Load()
Const BASE_VALUE As Long = 3 '基准值'

Dim arrValues(1 To 5, 1 To 3)
Dim i As Long
Dim value As Double

MSChart1.Stacking = True '两系列叠加'
'叠加状态Y轴不能自动缩放,自动状态下最大值还是按非叠加方式统计的。'
MSChart1.Plot.Axis(VtChAxisIdY).ValueScale.Auto = False
MSChart1.Plot.Axis(VtChAxisIdY).ValueScale.Maximum = 6
MSChart1.Plot.Axis(VtChAxisIdY).ValueScale.MajorDivision = 2
MSChart1.Plot.Axis(VtChAxisIdY).ValueScale.MinorDivision = 3
'系列1红,系列2蓝'
MSChart1.Plot.SeriesCollection(1).DataPoints(-1).Brush.FillColor.Set 255, 0, 0
MSChart1.Plot.SeriesCollection(2).DataPoints(-1).Brush.FillColor.Set 0, 0, 255

For i = 1 To 5
arrValues(i, 1) = ChrW(64 + i)
value = i

If value > BASE_VALUE Then '超过基准值就切成红蓝两段'
arrValues(i, 2) = BASE_VALUE
arrValues(i, 3) = value - BASE_VALUE
Else '否则只显示红色部分'
arrValues(i, 2) = value
End If
Next i
MSChart1.ChartData = arrValues

End Sub

又:我上传图片不成功,vansoft帮忙贴个效果图吧(MSChart1不用做任何设置)。
赵4老师 2015-05-04
  • 打赏
  • 举报
回复
试试在MsChart控件上方放一个Line控件。

1,451

社区成员

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

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