24小时热门版块排行榜    

查看: 465  |  回复: 0

Echo_hit

新虫 (小有名气)

[交流] 【求助】有关VB编写的sin光栅程序

谁能帮忙解释一下这段程序编写的sin光栅的思路,呼呼。。。
另外如果假如我输入周期=33,投影仪分辨率为1024*768。是不是光栅的周期是(768/33)pixel/line,若投射屏幕最终宽对应91.3cm,那么周期就是(913/33)mm/line。



Private Sub Command1_Click()
Dim c
Dim number As Integer
Dim du
Picture1.ScaleMode = 3 '设置picture控件使用 象素

Picture1.DrawWidth = 1 '设置在picture里画线,线使用的宽度为1象素
number = Picture1.Height '线条数目,如:显示器800*600即高600象素,画线时就画600条
du = 360 * Val(Text1) / number '每条所占的度数=360*周期/条数

For i = 0 To number
    c = 127.5 * ((Sin((du * i + Val(Text2.Text)) / 180 * 3.14)) + 1) 'du*i为第i条的度数,val(text2.text)是移象的度数,val函数是将字符转为数值
    Picture1.ForeColor = RGB(c, c, c)
    Picture1.Line (0, i)-(Picture1.Width, i) '画线,(0为起始点x,i起始点y)-(picture1.width为终点x,i为终点y)
Next
'Text1.SetFocus
End Sub
Private Sub Picture1_DblClick()
    Form2.Text1.Text = Text1.Text '保持两窗体的周期一样
    Form2.Text2.Text = Text2.Text '保持两窗体的移象度数一样
    Load Form2 '加载form2窗体
    Form2.Show
    Unload Me
End Sub

Private Sub Text2_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyLeft Then
    Text1.Text = Text1.Text - 1
ElseIf KeyCode = vbKeyRight Then
    Text1.Text = Text1.Text + 1
ElseIf KeyCode = vbKeyUp Then
    Text2.Text = Text2.Text + 90
ElseIf KeyCode = vbKeyDown Then
    Text2.Text = Text2.Text - 90
End If

End Sub

Private Sub Text2_KeyPress(KeyAscii As Integer)
If (KeyAscii <= Asc(9) And KeyAscii >= Asc(0)) Or KeyAscii = 8 Or KeyAscii = Asc("." Then
Else
    KeyAscii = 0
End If
End Sub
Private Sub Timer1_Timer() '定时刷新,1秒
If Text1.Text = "" Then Text1.Text = 0
If Text2.Text = "" Then Text2.Text = 0
Command1_Click
End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer) '限制键盘输入,只允许0-1或退格键或.
If (KeyAscii <= Asc(9) And KeyAscii >= Asc(0)) Or KeyAscii = 8 Or KeyAscii = Asc("." Then
Else
    KeyAscii = 0
End If
End Sub
Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyLeft Then '键盘方向键,向左,减一周期
    Text1.Text = Text1.Text - 1
ElseIf KeyCode = vbKeyRight Then
    Text1.Text = Text1.Text + 1
ElseIf KeyCode = vbKeyUp Then '键盘方向键,向上,加5度
    Text2.Text = Text2.Text + 90
ElseIf KeyCode = vbKeyDown Then
    Text2.Text = Text2.Text - 90
End If
End Sub
回复此楼

» 猜你喜欢

兰生幽谷,不因无人而不芳
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 Echo_hit 的主题更新
普通表情 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 能否退出参与的面上项目解除限项 +13 koalala 2026-08-24 15/750 2026-08-24 13:04 by lugia2
[基金申请] 2026国自然函评费到账 +17 羊腰板 2026-08-21 18/900 2026-08-24 12:03 by iaeyuan
[基金申请] 建议基金发布提前给出明确的时间点 +12 kulium 2026-08-21 15/750 2026-08-24 12:02 by iaeyuan
[基金申请] 范进中举一文的中心思想 +6 炎黄贵胄 2026-08-22 7/350 2026-08-24 11:58 by 6543yes
[基金申请] 放榜前的不淡定 20+4 snowwithsea 2026-08-19 17/850 2026-08-24 10:20 by echo8914667
[基金申请] 什么时候开奖? +10 CrisMessi 2026-08-18 11/550 2026-08-24 06:50 by 开心的小狮子
[教师之家] 跳槽后在研项目怎么办? +5 简单化xn 2026-08-22 10/500 2026-08-23 12:38 by 简单化xn
[基金申请] 今天放榜吗? +15 布布和一二 2026-08-19 16/800 2026-08-23 09:55 by 张春生
[基金申请] 93BebMhtakh前后11位开头都是大写 +7 且听虎啸 2026-08-17 8/400 2026-08-22 21:55 by 医学老男孩
[基金申请] 只有每年这种时候来逛逛小木虫 +24 yaoyewhu2008 2026-08-20 26/1300 2026-08-22 17:43 by kammury
[基金申请] filecode,4个jtjc了 +13 ziyangfang 2026-08-19 16/800 2026-08-22 17:08 by WH3796
[基金申请] 今天基金会出结果吗?20260819 +16 kkkl_v 2026-08-19 17/850 2026-08-22 16:12 by 阿布Abu
[基金申请] 时间戳今天,20号变了 +5 archvillain 2026-08-20 5/250 2026-08-22 06:12 by hui_daxiao
[基金申请] 时间戳又变了 +13 wuchongjun 2026-08-20 19/950 2026-08-21 17:21 by 紫杉醇
[基金申请] 我面上完蛋了 +7 且听虎啸 2026-08-20 8/400 2026-08-21 12:31 by 酷酷墨镜
[基金申请] 应该是下周三26日公布了吧? +4 哈哈蛤? 2026-08-21 4/200 2026-08-21 10:58 by Vivilian
[基金申请] 基金啊基金 +4 longfie172 2026-08-20 4/200 2026-08-21 08:58 by mark mao
[基金申请] 估计是周四 +3 archvillain 2026-08-18 3/150 2026-08-21 01:48 by jnhyjjm
[基金申请] 重要消息,中午系统在维护 +11 yuleib84 2026-08-18 12/600 2026-08-20 11:09 by xskun
[基金申请] 明天放榜? +5 Shxjjxjkx 2026-08-18 5/250 2026-08-18 18:14 by -大大大大大-
信息提示
请填处理意见