本文小編為大家詳細(xì)介紹“怎么用VB.NET繪制直線和貝塞爾曲線”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“怎么用VB.NET繪制直線和貝塞爾曲線”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學(xué)習(xí)新知識吧。
創(chuàng)新互聯(lián)專注于企業(yè)成都全網(wǎng)營銷、網(wǎng)站重做改版、徐水網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5建站、商城網(wǎng)站開發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)營銷網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為徐水等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
用VB.NET繪制直線的方法為:
畫布工具Graphics.DrawLine(鋼筆工具Pen,起始點(diǎn)Point,終止點(diǎn)Point)
其中的參數(shù)Point對象還可以用PointF對象或分別用其橫坐標(biāo)X值和橫坐標(biāo)Y值代替。
用VB.NET連續(xù)繪制多條直線的方法為:
畫布工具Graphics.DrawLines(鋼筆工具Pen,有序點(diǎn)數(shù)組)
其中的參數(shù)有序點(diǎn)數(shù)組由按照順序連接到各個(gè)點(diǎn)(Point或PointF)構(gòu)成的數(shù)組對象。
用VB.NET繪制貝塞爾曲線(Bezier)的方法為:
畫布工具Graphics.DrawBezier(鋼筆工具Pen,起始點(diǎn),控點(diǎn)1,控點(diǎn)2,結(jié)束點(diǎn))
注意繪制直線時(shí),參數(shù)中的各個(gè)點(diǎn)都經(jīng)過繪制的線段,但繪制貝塞爾曲線時(shí),參數(shù)中定義的四個(gè)點(diǎn)只有起始點(diǎn)和結(jié)束點(diǎn)經(jīng)過繪制的曲線,兩個(gè)控點(diǎn)是不在曲線上的,控點(diǎn)只控制起始點(diǎn)和結(jié)束點(diǎn)之間的曲線走向。由起始點(diǎn)到控點(diǎn)1引出的直線與曲線的開頭部分相切,由終止點(diǎn)到控點(diǎn)2引出的直線與曲線的結(jié)束部分相切。參數(shù)中的4個(gè)點(diǎn)可以用Point或PointF對象,也可以分別由這些點(diǎn)的橫坐標(biāo)和縱坐標(biāo)拆解成的8個(gè)Single參數(shù)代替。
用VB.NET連續(xù)繪制多條貝塞爾曲線的方法為:
畫布工具Graphics.DrawBezier(鋼筆工具Pen,有序點(diǎn)數(shù)組)
注意這里有序點(diǎn)數(shù)組(Point或PointF元素構(gòu)成)的第一個(gè)元素表示繪制曲線的第一個(gè)點(diǎn),接著是第一段曲線的兩個(gè)控點(diǎn),接著第一段曲線經(jīng)過并結(jié)束在第四點(diǎn);在接著連續(xù)繪制第二段曲線時(shí),會自動把第一段曲線的結(jié)束點(diǎn)(也就是第四個(gè)元素)當(dāng)作起始點(diǎn),然后第五和六個(gè)元素分表示第二段曲線的控點(diǎn),依次類推……,最后一個(gè)元素結(jié)束所有線段的繪制。
以下以繪制漢字“飛”舉例:
(1)在窗體的Paint事件處理程序中定義一個(gè)10像素寬的黑色鋼筆工具,定義兩個(gè)點(diǎn)數(shù)組,用DrawLines畫法連接兩個(gè)數(shù)組各個(gè)點(diǎn)的線段,繪制漢字“飛”:
Private Sub Form1_Paint(sender As Object, e As PaintEventArgs) Handles Me.Paint Dim pn As New Pen(Color.Black, 10) Dim pts1() As Point = {New Point(30, 70), New Point(200, 70), New Point(100, 300), New Point(300, 300), New Point(280, 270)} Dim pts2() As Point = {New Point(280, 90), New Point(164, 160), New Point(280, 220)} e.Graphics.DrawLines(pn, pts1) e.Graphics.DrawLines(pn, pts2) End With End Sub
(2)定義一個(gè)繪制各點(diǎn)坐標(biāo)旁注的方法:
Private Sub DrawPointString(gr As Graphics ,pts() As Point) Using f As New Font("Arial", 14, FontStyle.Regular) Using fm As New StringFormat fm.LineAlignment = StringAlignment.Center For Each p As Point In pts gr.DrawString($"({p.X},{p.Y })", f, Brushes.Red, p, fm) Next End Using End Using End Sub
(3)在Paint事件里標(biāo)注點(diǎn)數(shù)組里每個(gè)點(diǎn)的坐標(biāo):
DrawPointString(e.Graphics, pts1) DrawPointString(e.Graphics, pts2)
(4)改變鋼筆顏色為黃顏色,寬度減半,以便與原有圖形對比:
pn.Color = Color.Yellow pn.Width = 5
(5)再定義一個(gè)點(diǎn)數(shù)組,以便使用DrawBeziers繪制“飛”的第一筆劃:
Dim pts3() As Point = { New Point(30, 70), New Point(30, 70), New Point(30, 70), New Point(200, 70), '以上四個(gè)點(diǎn)用于繪制橫線,可見用到兩點(diǎn)的貝塞爾曲線相當(dāng)于直線 New Point(100, 300), New Point(100, 300), New Point(300, 300), '以上第4至第7四個(gè)點(diǎn)用于繪制豎彎部分的曲線 New Point(300, 300), New Point(300, 300), New Point(280, 270) 以上第7至第10四個(gè)點(diǎn)用于繪制代表鉤的直線 } e.Graphics.DrawBeziers(pn, pts3)
再利用DrawBezier方法繪制“飛”的第二筆劃:
e.Graphics.DrawBezier(pn, New Point(280, 90), New Point(130, 160), New Point(130, 160), New Point(280, 220))
(6)為了觀看到最終的曲線效果文字,可以利用畫布工具的平移變形,整理以上代碼如下:
Private Sub Form1_Paint(sender As Object, e As PaintEventArgs) Handles Me.Paint With e.Graphics Dim pn As New Pen(Color.Black, 10) Dim pts1() As Point = {New Point(30, 70), New Point(200, 70), New Point(100, 300), New Point(300, 300), New Point(280, 270)} Dim pts2() As Point = {New Point(280, 90), New Point(164, 160), New Point(280, 220)} .DrawLines(pn, pts1) .DrawLines(pn, pts2) DrawPointString(e.Graphics, pts1) DrawPointString(e.Graphics, pts2) .TranslateTransform(400, 0) Dim pts3() As Point = { New Point(30, 70), New Point(30, 70), New Point(30, 70), New Point(200, 70), New Point(100, 300), New Point(100, 300), New Point(300, 300), New Point(300, 300), New Point(300, 300), New Point(280, 270)} .DrawBeziers(pn, pts3) .DrawBezier(pn, New Point(280, 90), New Point(130, 160), New Point(130, 160), New Point(280, 220)) pn.Dispose End With End Sub Private Sub DrawPointString(gr As Graphics ,pts() As Point) Using f As New Font("Arial", 14, FontStyle.Regular) Using fm As New StringFormat fm.LineAlignment = StringAlignment.Center For Each p As Point In pts gr.DrawString($"({p.X},{p.Y })", f, Brushes.Red, p, fm) Next End Using End Using End Sub End Class
讀到這里,這篇“怎么用VB.NET繪制直線和貝塞爾曲線”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識點(diǎn)還需要大家自己動手實(shí)踐使用過才能領(lǐng)會,如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。