|
■No82134 (魔界の仮面弁士 さん) に返信
ありがとうございます。& 失礼しました。
> AxisX と AxisY の両方を受け渡すように改修すれば良いと思うのですが、そういうことではなく?
また質問になってないかもしれませんが、こう言うことで良いのでしょうか?
ただこの場合ですとChart1、Chart2ともに十字線になってしまいます。
希望としては、Chart1上にマウスがあるときにはChart2の罫線はx軸(縦罫線)だけで良いのです。
また逆にChart2上にマウスがあるときにはChart1の罫線はx軸(縦罫線)だけに。
Private _mp1 As Point
Private Sub Charts_MouseMove(ByVal sender As Object, ByVal e As MouseEventArgs) Handles Chart1.MouseMove, Chart2.MouseMove
_mp1 = e.Location
Chart1.Invalidate()
Chart2.Invalidate()
End Sub
Private Sub DrawVerticalLine(g As Graphics, axx As DataVisualization.Charting.Axis, axy As DataVisualization.Charting.Axis)
Dim x1 = axx.ValueToPixelPosition(axx.Minimum)
Dim x2 = axx.ValueToPixelPosition(axx.Maximum)
Dim y1 = axy.ValueToPixelPosition(axy.Maximum)
Dim y2 = axy.ValueToPixelPosition(axy.Minimum)
If _mp1.X >= x1 And _mp1.X <= x2 Then
If _mp1.Y >= y1 And _mp1.Y <= y2 Then
g.DrawLine(Pens.Gold, _mp1.X, CInt(y1), _mp1.X, CInt(y2))
g.DrawLine(Pens.Blue, CInt(x1), _mp1.Y, CInt(x2), _mp1.Y)
End If
End If
End Sub
Private Sub Chart1_PostPaint(ByVal sender As Object, ByVal e As DataVisualization.Charting.ChartPaintEventArgs) Handles Chart1.PostPaint
DrawVerticalLine(e.ChartGraphics.Graphics, Chart1.ChartAreas(0).AxisX, Chart1.ChartAreas(0).AxisY)
End Sub
Private Sub Chart2_PostPaint(ByVal sender As Object, ByVal e As DataVisualization.Charting.ChartPaintEventArgs) Handles Chart2.PostPaint
DrawVerticalLine(e.ChartGraphics.Graphics, Chart2.ChartAreas(0).AxisX, Chart2.ChartAreas(0).AxisY)
End Sub
|