VB.Net实现QQ窗体浮动效果的方法

VB.Net实现QQ窗体浮动效果的方法
 
 
 
实现功能:像QQ那样当窗体被移动到屏幕的最上方时,当鼠标不在窗体范围内时窗体自动浮动上升到屏幕上方,(此时窗体露出很小一个尺寸在屏幕范围内),当鼠标移动到窗体内时窗体自动下降到屏幕内。
 
我曾经尝试过用vb6.0来实现这个功能。现在发现6.0实在是比较弱,在获得鼠标坐标的时候要调用API函数。而.net中直接有me.mouseposition.x和me.mouseposition.y属性,使用起来相当方便。
 
以下来分析下要实现这个功能要考虑哪些问题。
1.什么时候窗体自动上升?
当窗体被移动到屏幕上方以外或者在临界位置,即me.location.y<=0时
2.什么时候窗体自动下降?
当鼠标移动到窗体上时,并且此时窗体处于屏幕上方或者正在向上放移动过程中。
3.窗体上升时上升到什么位置?
要保证窗体的一部分在屏幕内,这样以后才能把鼠标移动到窗体上使之下降。在这里我取得尺寸是3twip.
小于3twip是不合适的。
 
okay,考虑完这些问题,看看该怎么实现的,需要用到哪些事件,控件。。。
 
timer要用到两个,一个用来实现上升。一个用来实现下降。
判断鼠标是否在窗体内直接用鼠标的坐标来判断。虽然mousemove,mousehover可以判断鼠标是否在窗体内,但当鼠标在标题栏上是无法判断的。因为鼠标在标题栏上时是不触发mousemove和mousehover时间的。
 
hah... following is the code.
Public Class Form1
   
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
with timer1
           .enable=true
           .interval=1
end with
with timer2
           .enable=true
           .interval=1
end with
    End Sub
    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        If Me.MousePosition.X >= Me.Location.X And Me.MousePosition.X <= Me.Location.X + Me.Width And Me.MousePosition.Y >= Me.Location.Y And Me.MousePosition.Y <= Me.Location.Y + Me.Height Then
            Timer2.Enabled = False
            If Me.Location.Y <= 0 Then
                Me.Location = New Point(Me.Location.X, 0)
            End If
        Else
            Timer2.Enabled = True
        End If
    End Sub
    Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick
        Dim i As Int16
        Dim size As Decimal
        If Me.Location.Y <= 0 And Me.Location.Y + Me.Height > 3 Then
            i = 5
            size = (Me.Location.Y + Me.Height - 3) / 5
            For i = 1 To 5
                Me.Location = New Point(Me.Location.X, Me.Location.Y - size)
            Next i
        End If
    End Sub
End Class
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值