成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

vbnet畫sin的簡(jiǎn)單介紹

VB正弦曲線怎么畫?

在寫代碼之前,我們需要知道標(biāo)準(zhǔn)的正弦函數(shù)(以下稱為sin函數(shù)),最大值是1,最小值是-1,幾個(gè)關(guān)鍵點(diǎn)是0,±n*π/2,±n*π,而且它是周期性的,我們不可能讓VB真的無限畫下去,只需要在可見的窗體上繪制就行了。說sin的概念是為了確定坐標(biāo)系,因?yàn)閟in最大值也只有1,所以我們要放大它的值,以便顯示最好的效果,如果不確定坐標(biāo)系,可能畫出來一條近似直線的波浪線。

創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、鳳凰網(wǎng)絡(luò)推廣、小程序制作、鳳凰網(wǎng)絡(luò)營銷、鳳凰企業(yè)策劃、鳳凰品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供鳳凰建站搭建服務(wù),24小時(shí)服務(wù)熱線:18980820575,官方網(wǎng)址:jinyejixie.com

首先,在Form_Load的事件里面寫好坐標(biāo)系,如果自己邏輯好這步確實(shí)可以不做,但是不做的結(jié)果就是需要寫代碼的人自己考慮偏移量,所以定好坐標(biāo)系之后,寫的函數(shù)就簡(jiǎn)單直觀許多了。自定義坐標(biāo)系的方法是:scale(x1,y1)-(x2,y2).

第二,開始寫sin的函數(shù),可以寫在模塊里面,也可以直接在窗體代碼區(qū)寫,寫模塊是為了以后調(diào)試方便,如果只是為了顯示標(biāo)準(zhǔn)的sin函數(shù),在窗體寫也可以。定義幾個(gè)雙精度付典型的變量y,x ?,函數(shù)關(guān)系是y=sin(x)

第三,繪制一個(gè)點(diǎn),當(dāng)然是sin上的點(diǎn)。第二步已經(jīng)獲得了x和y,正好是橫坐標(biāo)和縱坐標(biāo),我們?yōu)榱俗屒€平滑一些,可以Line方法,因?yàn)檎娴漠孅c(diǎn)十分吃內(nèi)存,比較卡,也就是我們畫線不畫點(diǎn)(很短很短的先近似于點(diǎn)),方法是Line (x1,y1)-(x2,y2)

最后,套用循環(huán)語句輸出,其實(shí)說這是最后也不太合適,這部其實(shí)是套在第三步和第二步之外的,也就是確定x軸顯示區(qū)間和曲線平滑度的作用。

'代碼

Private?Sub?Form_Load()

Me.AutoRedraw?=?True????????????'開啟自動(dòng)重繪

Form1.Height?=?2400?????????????'自定義窗體高度

Form1.Width?=?8000??????????????'自定義窗體寬度

Scale?(-16,?1.2)-(16,?-1.2)?????'自定義坐標(biāo)系

Line?(-16,?0)-(16,?0)???????????'繪制X軸

Line?(0,?1.2)-(0,?-1.2)?????????'繪制Y軸

End?Sub

Private?Sub?Command1_Click()

Line?(-16,?Sin(-16))-(-16,?Sin(-16))??'畫起始點(diǎn)

Dim?x?As?Double?????????????????'定義x

Dim?y?As?Double?????????????????'定義y

For?i?=?-16?To?16?Step?0.1??????'step越小,曲線越平滑

x?=?i

y?=?Sin(x)

Line?-(x,?y)????????????????'連接上一個(gè)點(diǎn)

Next?i

End?Sub

vb2008中如何編程實(shí)現(xiàn)繪制正弦函數(shù)

在窗體的?Paint?事件中寫代碼,如果是pictureBox,就在pictureBox的Paint事件中寫。

這是最基本的過程,關(guān)于坐標(biāo)的問題,可能可以把整個(gè)窗體坐標(biāo)重定義為笛卡爾坐標(biāo),但是本人也不是很清楚,請(qǐng)另行百度。

Private?Sub?Form1_Paint(sender?As?Object,?e?As?PaintEventArgs)?Handles?MyBase.Paint

'獲取窗體的繪圖對(duì)象

Dim?grpf?As?Graphics?=?e.Graphics

'從0到360度,每一度畫一個(gè)點(diǎn),對(duì)應(yīng)的創(chuàng)建一個(gè)下標(biāo)從0到360的數(shù)組

Dim?pointfs(360)?As?System.Drawing.PointF

'創(chuàng)建畫筆,顏色為黑色,線寬為2個(gè)像素。待會(huì)畫出的線條就是黑色的,兩個(gè)像素寬度

Dim?p?As?Pen?=?New?Pen(Color.Black,?2)

'sin的計(jì)算需要用弧度,前面定義是角度,所以定義一個(gè)弧度的變量

Dim?arc?As?Single

'將每個(gè)點(diǎn)計(jì)算出來

For?i?As?Integer?=?0?To?360

pointfs(i).X?=?i?*?1.5?'乘1.5可以把線條橫向拉長(zhǎng)1.5倍

'將角度轉(zhuǎn)換為弧度

arc?=?i?/?180?*?Math.PI

'由于窗體的坐標(biāo)和笛卡爾坐標(biāo)不同,為了看起來像是笛卡爾坐標(biāo)上的形狀,除了計(jì)算

'sin的值外,還要把坐標(biāo)變換一下。數(shù)字50是正弦曲線的幅度

pointfs(i).Y?=?Math.Sin(arc)?*?-50?+?50

Next

'根據(jù)畫筆和點(diǎn)數(shù)組將曲線畫出來

grpf.DrawCurve(p,?pointfs)

End?Sub

VB.NETsin曲線

Dim Points1(30) As Point

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

Timer1.Enabled = True

Timer1.Interval = 200

For i = 0 To 30

Points1(i) = New Point(i * 45, Math.Sin(i) * (PictureBox1.Height - 50) / 9)

Points1(i).Offset(-450, Math.Abs(Points1(i).Y - (PictureBox1.Height - 50) / 9) * 3.55 + 43)

Next

End Sub

Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick

Static j As Long

j = j + 1

PictureBox1.Image = x_y(PictureBox1, j)

End Sub

Private Function x_y(ByVal pic As PictureBox, ByVal x As Long) As Bitmap

Dim b As New Bitmap(pic.Width, pic.Height)

Dim g As Graphics = Graphics.FromImage(b)

Dim c

Dim j

g.Clear(Color.YellowGreen)

Dim p As New Pen(Color.WhiteSmoke)

p.EndCap = Drawing2D.LineCap.ArrowAnchor

g.DrawLine(p, 20, pic.Height - 20, 20, 10)

g.DrawLine(p, 20, pic.Height - 20, pic.Width - 20, pic.Height - 20)

Dim i As Double

Dim bs As New SolidBrush(Color.Red)

Dim po As New Point

g.DrawString(-2, Me.Font, bs, 12, pic.Height - 18)

po.X = 0

po.Y = pic.Height - 45

For i = -1.6 To 4 Step 0.4

g.DrawString(Math.Round(i, 1), Me.Font, bs, po.X, po.Y)

g.DrawLine(p, po.X + 18, po.Y + 5, po.X + 20, po.Y + 5)

Dim p1 As New Pen(Color.Blue)

p1.DashStyle = Drawing2D.DashStyle.Dash

g.DrawLine(p1, po.X + 28, po.Y + 5, pic.Width - 20, po.Y + 5)

po.Y -= (pic.Height - 50) / 9

Next

po.X = 20

po.Y = pic.Height - 20

For c = 0 To 14400 Step 1200

If (c / 1200) 0 Then

g.DrawString((c / 1200) + x, Me.Font, bs, po.X - j, po.Y + 5)

End If

g.DrawLine(p, po.X, po.Y + 2, po.X, po.Y)

po.X += (pic.Width - 50) / 12

Next

For i = 0 To Points1.Count - 1

Points1(i).Offset(45, 0)

Next

If x Mod 6 = 0 Then

For i = 0 To Points1.Count - 1

Points1(i).Offset(-270, 0)

Next

End If

g.DrawCurve(Pens.Red, Points1)

'For i = 0 To Points1.Count - 1

'g.DrawString(Math.Sin(i), Me.Font, Brushes.Red, Points1(i))

'Next

Return b

End Function

vb.net中繪制一條 sin波形曲線,縱軸是峰值,橫軸是時(shí)間,剛才你教我那個(gè)是單獨(dú)畫一條sin曲線,

根據(jù)時(shí)間變化繪制的,即時(shí)的,或許可以用chart圖表控件,百度會(huì)出現(xiàn)微軟網(wǎng)站的資料。

sin曲線永遠(yuǎn)是哪個(gè)樣子,你是怎么變化?一般的移動(dòng),可以用offset控制向左平移,右邊則增加點(diǎn),看上去應(yīng)該是在移動(dòng)

大佬們~VisualStudio中vb.net如何畫三角函數(shù)圖像?

VB系統(tǒng)的坐標(biāo)原點(diǎn)在左上角,X軸的正方向是水平向右,而Y軸的正方向是垂直向下。所以,要繪制三角函數(shù)的曲線,自己可以通過改變點(diǎn)坐標(biāo)的方法來實(shí)現(xiàn),當(dāng)然,VB.NET提供了相應(yīng)的方法可以來實(shí)現(xiàn)坐標(biāo)變換,也可以通過VB.Net的Graphics類提供的平移、旋轉(zhuǎn)等轉(zhuǎn)換來實(shí)現(xiàn)。

下面是我通過自己變換實(shí)現(xiàn)的示例,提供參考;我的環(huán)境是VB.NET 2010

Imports System.Math

Public Class Form1

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

? '1,獲得一個(gè)Graphics對(duì)象

? Dim MyGraphics As Graphics

? MyGraphics = PictureBox1.CreateGraphics

? '2,定義一個(gè)Pen對(duì)象,用于繪制圖形(輪廓線)

? Dim MyPen As New Pen(Color.Black, 1)

? '3,定義一個(gè)Brush對(duì)象,用于填充圖形(如果需要填充的話)

? Dim MyBrush As New SolidBrush(Color.Orange)

? MyGraphics.DrawLine(MyPen, 0, 200, 700, 200)

End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

? '1,獲得一個(gè)Graphics對(duì)象

? Dim MyGraphics As Graphics

? MyGraphics = PictureBox1.CreateGraphics

? '2,定義一個(gè)Pen對(duì)象,用于繪制圖形(輪廓線)

? Dim MyPen As New Pen(Color.Black, 1)

? '3,定義一個(gè)Brush對(duì)象,用于填充圖形(如果需要填充的話)

? Dim MyBrush As New SolidBrush(Color.Orange)

? '聲明橫向和縱向比例變量

? Dim Heng As Integer = 20

? Dim Zong As Integer = 50

? '先獲得正弦值,保存到點(diǎn)坐標(biāo)數(shù)組

? Dim MyPoints(700) As Point

? Dim i As Integer

? For i = 0 To 700

? ? ? MyPoints(i) = New Point(i * Heng, 200 + Sin(i) * Zong)

? Next

? '采用繪制光滑線連接點(diǎn)的方式繪制曲線

? MyGraphics.DrawCurve(MyPen, MyPoints)

End Sub

End Class

顯示的效果圖:

當(dāng)前文章:vbnet畫sin的簡(jiǎn)單介紹
網(wǎng)頁網(wǎng)址:http://jinyejixie.com/article46/dosdgeg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供標(biāo)簽優(yōu)化、移動(dòng)網(wǎng)站建設(shè)、建站公司、Google、靜態(tài)網(wǎng)站網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司

網(wǎng)站設(shè)計(jì)公司知識(shí)

襄汾县| 澎湖县| 镶黄旗| 九台市| 龙川县| 印江| 临安市| 旬邑县| 垣曲县| 石楼县| 密云县| 手游| 中宁县| 桂东县| 娱乐| 新邵县| 怀柔区| 屏南县| 盐亭县| 深州市| 宣恩县| 出国| 南昌市| 隆回县| 上林县| 霍城县| 元氏县| 城市| 通化县| 辽宁省| 鞍山市| 武强县| 隆化县| 福泉市| 佛山市| 兴国县| 黑河市| 泸水县| 澄江县| 德兴市| 东乡族自治县|