|
分類:[VB.NET/VB2005 以降]
皆さんに教えて頂いて作ってみたのですが上手く行きません。
全くの初心者ですが教えてください。
ヒントではなく実際のプログラムでお願いします。
Q1,
x1 = CInt(Chart1.ChartAreas(0).AxisX.ValueToPixelPosition(2))などとして、この場合ですと、
"0402" の位置に縦に罫線を引きたいのですが、何故かButton1を2度クッリクしないと罫線が引けません。
これを1度のクリックにするにはどうすれば良いのですか?
Q2,
この例ですと、データは2日間ですが、実際にはもっと多く、しかも日数もその都度増減します。
その影響もあってか、現表示チャートと前表示チャートとで日数が異なった場合、
同じようにValueToPixelPosition(2)などと指定しても、x1の値が的確に反映されず、
現在表示してるローソク足との位置もずれてしまいます。どうすれば良いのですか?
Q3,
罫線をローソク足の背面に引くにはどうすれば良いのですか?
Public Class Form1
Private keisen As Boolean = False
Private x1 As Integer
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim ds As New DataSet
Dim dt As New DataTable
Dim dtRow As DataRow
'列の作成
dt.Columns.Add("日付", GetType(String))
dt.Columns.Add("高値", GetType(Integer))
dt.Columns.Add("安値", GetType(Integer))
dt.Columns.Add("始値", GetType(Integer))
dt.Columns.Add("終値", GetType(Integer))
ds.Tables.Add(dt)
'データのセット
dtRow = ds.Tables(0).NewRow
dtRow(0) = "0401" '日付
dtRow(3) = 150 '始値
dtRow(1) = 200 '高値
dtRow(2) = 100 '安値
dtRow(4) = 130 '終値
ds.Tables(0).Rows.Add(dtRow)
dtRow = ds.Tables(0).NewRow
dtRow(0) = "0402" '日付
dtRow(3) = 150 '始値
dtRow(1) = 300 '高値
dtRow(2) = 100 '安値
dtRow(4) = 250 '終値
ds.Tables(0).Rows.Add(dtRow)
'
Chart1.DataSource = ds
Chart1.Series.Clear()
'Y軸の罫線
Chart1.ChartAreas(0).AxisX.MajorGrid.Enabled = False
'
Dim rosoku = Chart1.Series.Add("ローソク足")
With rosoku
.ChartType = DataVisualization.Charting.SeriesChartType.Candlestick
.XValueMember = "日付"
.YValueMembers = "高値, 安値, 始値, 終値"
.IsVisibleInLegend = False
End With
'------------------------------------
'該当日の上に罫線を引く
keisen = True
x1 = CInt(Chart1.ChartAreas(0).AxisX.ValueToPixelPosition(2))
Chart1.Invalidate()
End Sub
'Chart1上に罫線を引く
Private Sub Chart1_PostPaint(ByVal sender As Object, ByVal e As System.Windows.Forms.DataVisualization.Charting.ChartPaintEventArgs) Handles Chart1.PostPaint
If keisen Then
e.ChartGraphics.Graphics.DrawLine(Pens.Black, x1, 0, x1, Chart1.Height)
End If
End Sub
End Class
|