VB实现图标的反相显示

风中散发
引自软件报
1.用一个PICTURE控件(AutoSize属性为TRUE)转入一个合适的图片,用一个LABEL控件写入该图标的文字说
明,以标准WINDOWS背景为例,FORM,PICTURE和LABEL的BackColor属性都为"系统/桌面",Label的
ForeColor属性为"系统/突出显示文本";
2,判断鼠标是否在Picture控件或Label控件范围内单击,如果是就改变颜色。
下面是程序代码参考:

Dim m_Click As Integer 'm_Click记录鼠标的状态
Dim myObject As Object 'myObject是对象变量
Private Sub Form_Click()
If m_Click = 1 Then '1 表示鼠标已经单击
For Each myObject In Form1 ' 在Form 的其他位置单击则回复背景色
myObject.BackColor = &H80000001 '背景颜色
Next
m_Click = 0
End If
End Sub
Private Sub Form_Load()
m_Click = 0 ' 表示鼠标松开
End Sub
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If m_Click = 1 Then '1 表示鼠标已经单击
For Each myObject In Form1 '鼠标在Form上移动时,被选中的图标将改变颜色
If myObjeect.BackColor = 8388608 Then '
myObject.BackColor = &HFF0000
End If
Next
End If
End Sub
Private Sub Label1_Click()
'1表示鼠标单击,则图标和相应的文字就会呈反相显示(图标和文字上都覆盖了一层蓝色的前景,并且是透明
的)
Picture1.BackColor = &H800000
Label1.BackColor = &H800000
m_Click = 1
End Sub
Private Sub Label1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If m_Click = 1 Then '表示鼠标已经单击
If (X < 0 Or X > Label1.Width) Or (Y < 0 Or Y > Label1.Height) Then
'判断鼠标不在Label控件范围内,则改变图标的颜色
For Each myObject In Form1
If myObject.BackColor = 8388608 Then
myObject.BackColor = &Hff0000
End If
Next
Else
' 鼠标在Label控件范围内,则恢复图标的颜色
For Each myObject In Form1
If myObject.BackColor = 16711680 Then
myObject.BackColor = &H800000
End If
Next
End If
End If
End Sub
Private Sub Picture1_Click()
'表示鼠标单击图标,则图标和相应的文字就会呈反相显示(图标和文字上都覆盖一层蓝色的前景色,并且那蓝
色是透明的)
Picture1.BackColor = &H800000
Label1.BackColor = &H800000
m_Click = 1 '表示鼠标单击
End Sub
Private Sub Picture1_MouseMove(BUtton As Integer, Shift As Integer, X As Single, Y As Single)
If m_Click = 1 Then
If ( X < 0 Or X > Picture1.Width) Or ( Y < 0 Or Y > Picture1.Height) Then
For Each myObject In Form1
If myObject.BackColor = 16711680 Then
myObject.BackColor = &H800000
End If
Next
End If
End If
End Sub
※修改: windhair (风中散发) 于 2000-01-04 22:43:16 在 [202.117.95.134] 修改本文


.

.

.