。net ?其實(shí)還是很好繪制圖形的
10年積累的網(wǎng)站設(shè)計(jì)制作、做網(wǎng)站經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶(hù)對(duì)網(wǎng)站的新想法和需求。提供各種問(wèn)題對(duì)應(yīng)的解決方案。讓選擇我們的客戶(hù)得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站設(shè)計(jì)制作后付款的網(wǎng)站建設(shè)流程,更有雷州免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
你可以看下?Graphics ?類(lèi)
Dim d As New Bitmap(Me.Width, Me.Height) ?‘一個(gè)圖片吧
? Dim g As Graphics = Graphics.FromImage(d)’繪制 ?準(zhǔn)備在這個(gè)圖片是進(jìn)行
然后 ?就是你繪制的東西了
線 就是 ??g.DrawLine()
圓 弧度 ?就用 ?g.DrawArc(Pens.Black, New Rectangle(0, 0, 400, 200), 0, 360)
復(fù)雜的就是 ? ? ?g.DrawBezier()
等 ?如果你用的是 VS的 ?編譯 ?上面都有詳細(xì)的參數(shù)說(shuō)明
Dim?d?As?New?Bitmap(Me.Width,?Me.Height)
Dim?g?As?Graphics?=?Graphics.FromImage(d)
g.DrawArc(Pens.Black,?New?Rectangle(0,?0,?200,?200),?0,?360)
g.DrawLine(Pens.Red,?New?Point(0,?0),?New?Point(200,?200))
g.DrawLines(Pens.Green,?New?Point()?{New?Point(0,?0),?New?Point(50,?40),?New?Point(50,?80),?New?Point(90,?70),?New?Point(100,?400)})
g.DrawBezier(Pens.Yellow,?New?Point(0,?100),?New?Point(0,?0),?New?Point(200,?0),?New?Point(200,?200))
g.Dispose()
Me.BackgroundImage?=?d
采用繪制直線的方法:
你給出了9個(gè)點(diǎn)坐標(biāo);
(2,0.8)、(3,0.6)、(4,0.5)、(5,0.4)、..........
把這些相鄰的點(diǎn)之間用直線連接起來(lái),就是折線了。
VB6可以在窗體上或者PictureBox里繪制圖形,語(yǔ)句為:
對(duì)象.Line (x1,y1)-(x2,y2)
其中:(x1,y1)和(x2,y2)分別是兩個(gè)點(diǎn)的坐標(biāo)。
用MSCHART控件
定義一個(gè)二維數(shù)組,例如:Global studydata(1 To 5, 1 To 7) '學(xué)歷數(shù)據(jù)
ElseIf cb_sort.Text = "學(xué)歷" And cb_chart.Text = "折線圖" Then
With MSChart1
.ColumnCount = 6
.ChartData = studydata
.DataGrid.ColumnLabel(1, 1) = "研究生及以上"
.DataGrid.ColumnLabel(2, 1) = "本科"
.DataGrid.ColumnLabel(3, 1) = "專(zhuān)科"
.DataGrid.ColumnLabel(4, 1) = "中專(zhuān)"
.DataGrid.ColumnLabel(5, 1) = "高中"
.DataGrid.ColumnLabel(6, 1) = "初中及以下"
.TitleText = "全公司學(xué)歷結(jié)構(gòu)圖示"
.ToolTipText = "全公司學(xué)歷結(jié)構(gòu)圖示"
.ChartType = VtChChartType2dLine '折線圖
'MSChart1.Stacking = True
End With
第一步,輸入。這個(gè)額不用說(shuō)了。
第二步,找出最大值和最小值,就可以把縱坐標(biāo)和數(shù)值換算了(或者直接設(shè)置坐標(biāo)系)。
第三步,畫(huà)出坐標(biāo)軸。
第四步,畫(huà)點(diǎn),拉線。
代碼如下:
Const 數(shù)據(jù)數(shù) = 5
Private Sub Form_Click()
Dim 數(shù)據(jù)(數(shù)據(jù)數(shù)) As Single, 最大值 As Single, 最小值 As Single
Dim 留邊 As Single, 刻度線長(zhǎng)度 As Single, 刻度距 As Single
Dim i As Integer, j As Single
Me.AutoRedraw = True
For i = 1 To 數(shù)據(jù)數(shù)
數(shù)據(jù)(i) = Val(InputBox("請(qǐng)輸入第" i "個(gè)數(shù)據(jù)"))
Next i
最大值 = 數(shù)據(jù)(1)
最小值 = 最大值
For i = 2 To 數(shù)據(jù)數(shù)
If 數(shù)據(jù)(i) 最大值 Then
最大值 = 數(shù)據(jù)(i)
ElseIf 數(shù)據(jù)(i) 最小值 Then
最小值 = 數(shù)據(jù)(i)
End If
Next i
留邊 = (最大值 - 最小值) * 0.1
If 最大值 0 And 最小值 0 Then
最小值 = 0
ElseIf 最大值 0 And 最小值 0 Then
最大值 = 0
End If
最大值 = 最大值 + 留邊
最小值 = 最小值 - 留邊
Me.Scale (-1, 最大值)-(數(shù)據(jù)數(shù) + 1, 最小值)
Line (0, 最小值)-(0, 最大值)
刻度線長(zhǎng)度 = 數(shù)據(jù)數(shù) / 50
CurrentX = CurrentX + 刻度線長(zhǎng)度
Print "Y"
Line (-1, 0)-(數(shù)據(jù)數(shù) + 1, 0)
CurrentX = CurrentX - 數(shù)據(jù)數(shù) / 50
Print "N"
差值 = 最大值 - 最小值
刻度距 = 10 ^ Int(Log(差值 / 3) / Log(10))
For j = 0 To 最大值 Step 刻度距
Line (0, j)-(刻度線長(zhǎng)度, j)
Print j
Next j
For j = 0 To 最小值 Step -刻度距
Line (0, j)-(刻度線長(zhǎng)度, j)
Print j
Next j
刻度線長(zhǎng)度 = 留邊 / 2
For i = 1 To 數(shù)據(jù)數(shù)
Line (i, 刻度線長(zhǎng)度)-(i, 0)
Print i
Next i
數(shù)據(jù)標(biāo)記半徑 = 刻度線長(zhǎng)度 / 100
For i = 1 To 數(shù)據(jù)數(shù) - 1
Line (i, 數(shù)據(jù)(i))-(i + 1, 數(shù)據(jù)(i + 1)), vbRed
Circle (i, 數(shù)據(jù)(i)), 數(shù)據(jù)標(biāo)記半徑, vbRed
Print 數(shù)據(jù)(i)
Next i
Circle (數(shù)據(jù)數(shù), 數(shù)據(jù)(數(shù)據(jù)數(shù))), 數(shù)據(jù)標(biāo)記半徑, vbRed
Print 數(shù)據(jù)(數(shù)據(jù)數(shù))
End Sub
你可以通過(guò)用VB.net控制excel,讓excel生成曲線圖,然后利用excelVBA將圖輸出,最后導(dǎo)入到VB.net就可以了。