mschart怎末画横线?

xiaoyu48431 2010-04-19 10:29:22
请问怎么在mschart中画水平线
因为图中需要标明上下阈值
这样很容易看出那个月的数值不符合要求
...全文
474 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
tigertang123 2011-09-22
  • 打赏
  • 举报
回复
MSChart 实例里面画线的 实例代码

Private Sub Chart1_PostPaint(sender As Object, e As System.Windows.Forms.DataVisualization.Charting.ChartPaintEventArgs) Handles Chart1.PostPaint
If TypeOf sender Is ChartArea Then

Dim area As ChartArea = CType(sender, ChartArea)
If area.Name = "Default" Then
' If Connection line is not checked return
If Not ConnectionLine.Checked Then
Return
End If
Dim max As Double
Dim min As Double
Dim xMax As Double
Dim xMin As Double

' Find Minimum and Maximum values
FindMaxMin(max, min, xMax, xMin)

' Get Graphics object from chart
Dim graph As Graphics = e.ChartGraphics.Graphics

' Convert X and Y values to screen position
Dim pixelYMax As Single = CSng(e.ChartGraphics.GetPositionFromAxis("Default", AxisName.Y, max))
Dim pixelXMax As Single = CSng(e.ChartGraphics.GetPositionFromAxis("Default", AxisName.X, xMax))
Dim pixelYMin As Single = CSng(e.ChartGraphics.GetPositionFromAxis("Default", AxisName.Y, min))
Dim pixelXMin As Single = CSng(e.ChartGraphics.GetPositionFromAxis("Default", AxisName.X, xMin))

Dim point1 As PointF = PointF.Empty
Dim point2 As PointF = PointF.Empty

' Set Maximum and minimum points
point1.X = pixelXMax
point1.Y = pixelYMax
point2.X = pixelXMin
point2.Y = pixelYMin

' Convert relative coordinates to absolute coordinates.
point1 = e.ChartGraphics.GetAbsolutePoint(point1)
point2 = e.ChartGraphics.GetAbsolutePoint(point2)

' Draw connection line
graph.DrawLine(New Pen(Color.Yellow, 3), point1, point2)
End If
End If
End Sub


VeryShooter 2011-08-21
  • 打赏
  • 举报
回复
图形化方法:
右击MSChart---属性---ChartAreas---Axes---Y (Value) axis---StripLines---添加一个StripLine---设置IntervalOffSet属性值(距离Y轴远点的距离,也就是阈值),BackColor的颜色(默认是白色,看不见,改成别的显眼的颜色)。

编程方法:(见http://blog.csdn.net/loveseunghun/article/details/5554626)
StripLine sl1 = new StripLine();
sl1.BackColor = System.Drawing.Color.Red; //默认为白色,看不见
sl1.IntervalOffset = 1;
sl1.StripWidth = 0.001;
sl1.Text = "上限";
sl1.TextAlignment = StringAlignment.Near;
ChartLine1.ChartAreas[0].AxisY.StripLines.Add(sl1);
StripLine sl1 = new StripLine();
sl1.BackColor = System.Drawing.Color.Red;
sl1.IntervalOffset = 1;
sl1.StripWidth = 0.001;
sl1.Text = "上限";
sl1.TextAlignment = StringAlignment.Near;
ChartLine1.ChartAreas[0].AxisY.StripLines.Add(sl1);
夜归人 2010-12-09
  • 打赏
  • 举报
回复
可以用线状的Annotation画一天横线,调整Annotation坐标
cupwei 2010-05-05
  • 打赏
  • 举报
回复
3楼的设置一个上限是管用的 但是不能动态的改变啊
loveseunghun 2010-05-04
  • 打赏
  • 举报
回复
好像还有这个方法
StripLine sl1 = new StripLine();
sl1.BackColor = System.Drawing.Color.Red;
sl1.IntervalOffset = 1;
sl1.StripWidth = 0.001;
sl1.StripWidthType = DateTimeIntervalType.Number;
sl1.Text = "上限";
sl1.TextAlignment = StringAlignment.Near;
ChartLine1.ChartAreas[0].AxisY.StripLines.Add(sl1);

我试了,挺管用的
xiaoyu48431 2010-04-22
  • 打赏
  • 举报
回复
好了 解决了
就是又画了一个series

缺点就是直线无法从纵轴开始延伸
loveseunghun 2010-04-21
  • 打赏
  • 举报
回复
多设一个 series,然后y坐标设成固定值,这样不行吗?

4,816

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 图表区
社区管理员
  • 图表区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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