重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
Dim i As Integer
创新互联建站长期为近1000家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为乌兰察布企业提供专业的做网站、成都网站设计,乌兰察布网站改版等技术服务。拥有10余年丰富建站经验和众多成功案例,为您定制开发。
For i = 0 To Me.Width - Button1.Width 'me为容器,典型的是form1
Button1.Left += 1
Windows.Forms.Application.DoEvents()
Next
原理:不断地变化button1的X轴,使其向右移,同样,只要控制好其x,y轴,就可以变化button的变化
如果是做小游戏,建议弄成类吧,把其中的左(右)移或对角其它移动弄成其接口,以便操作。
由于涉及内容太多,不再详述。原理都一样
第一步,先把整形变量数(有正有负)转化为2进制数存放在一个Byte(0 to 1)中
Dim MyB(1) as byte
if N =0 then
Myb(0)= N \ 256 //高位
Myb(1)= N mod 256 //低位
else
tmp=N*(-1)
Myb(0)= tmp \256
Myb(1)= tmp mod 256
Myb(0)= Not(Myb(0) and H80) //将符号位取反
Myb(1)= Not(Myb(1)) +1
//以上两行是先求出正数N的二进制表示方法,然后把最高位置1(这样就是-N的原码了)
//然后把所有位都取反,末尾+1,这样就是-N的补码形式了,在计算机中负数是补码来存放的。
end if
转化好以后就是移位操作了,意味操作代码如下(假定你要移动N位)
For i=1 to N
SaveHi = Myb(0) '保存高位,是为了判断右移时是否向低位字节进1
'以下是右移 ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '
Myb(0) = Myb(0) \ 2 '右移不会溢出的
Myb(1)= Myb(1) \ 2
If ((SaveHi And H1) = H1) Then
Myb(1) = Myb(1) Or H80
End If
Next
如果是左移,也是一样:
For i=1 to N
SaveLo = Myb(1) '保存低位,是为了判断左移时是否向高位字节进1
'以下是右移 ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '
Myb(0) = (Myb(0) * 2) mod HFF '要取余,不然会溢出
Myb(1) = (Myb(1) * 2) mod HFF
If ((SaveLo And H80) = H1) Then
Myb(0) = Myb(0) Or H01 '高位进一
End If
Next
Private Sub CommandButton1_Click()
Form1.Left = Form1.Left + 10'窗体右移10像素单位
Form1.Top = Form1.Top + 10'窗体下移10像素单位
End Sub
见下面代码,放置定时器,按钮,标签各一个
Public Class Form1
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick '定时器
If Label1.Right Me.Width Then
Label1.Left += 10'移动距离
Else
Label1.Left = 0
End If
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click '开启或者关闭定时器
Timer1.Interval = 1000 '1秒
If Timer1.Enabled = False Then
Timer1.Start() '开定时器
Else
Timer1.Stop() '关定时器
End If
End Sub
End Class