繁體
|
簡體
Sclub交友聊天~加入聊天室當版主
(檢舉)
分享
新浪微博
QQ空间
人人网
腾讯微博
Facebook
Google+
Plurk
Twitter
Line
標題:
如何在Chart中选取部分?
[打印本頁]
作者:
mhfo
時間:
2017-6-9 11:43
標題:
如何在Chart中选取部分?
如何在Chart中选取部分?
Hi lilin,
根据您的要求,建议您使用矩形来选择捕获的点,具体如何实现请参考以下代码:
Private mdown As Point = Point.Empty
Private selectedPoints As List(Of DataPoint) = Nothing
Private Sub chart1_MouseDown(sender As Object, e As MouseEventArgs)
mdown = e.Location
selectedPoints = New List(Of DataPoint)()
End Sub
Private Sub chart1_MouseMove(sender As Object, e As MouseEventArgs)
If e.Button = System.Windows.Forms.MouseButtons.Left Then
Chart1.Refresh()
Using g As Graphics = Chart1.CreateGraphics()
g.DrawRectangle(Pens.Red, GetRectangle(mdown, e.Location))
End Using
End If
End Sub
Private Sub chart1_MouseUp(sender As Object, e As MouseEventArgs)
Dim ax As Axis = Chart1.ChartAreas(0).AxisX
Dim ay As Axis = Chart1.ChartAreas(0).AxisY
Dim rect As Rectangle = GetRectangle(mdown, e.Location)
For Each dp As DataPoint In Chart1.Series(0).Points
Dim x As Integer = CInt(ax.ValueToPixelPosition(dp.XValue))
Dim y As Integer = CInt(ay.ValueToPixelPosition(dp.YValues(0)))
If rect.Contains(New Point(x, y)) Then
selectedPoints.Add(dp)
End If
Next
' optionally color the found datapoints:
For Each dp As DataPoint In Chart1.Series(0).Points
dp.Color = If(selectedPoints.Contains(dp), Color.Red, Color.Black)
Next
End Sub
Public Shared Function GetRectangle(p1 As Point, p2 As Point) As Rectangle
Return New Rectangle(Math.Min(p1.X, p2.X), Math.Min(p1.Y, p2.Y), Math.Abs(p1.X - p2.X), Math.Abs(p1.Y - p2.Y))
End Function
歡迎光臨 魚骨頭的雲端圖書館 (http://mhfo.hotbbs.info/)
Powered by Discuz! 7.0.0