谁看看这段函数是得到什么样的结果.

wumylove1234 2005-06-16 10:57:54
Private Function ShiftColor(ByVal Color As Long, ByVal Value As Long, Optional isXP As Boolean = False) As Long
'this function will add or remove a certain color
'quantity and return the result

Dim Red As Long, Blue As Long, Green As Long

If isXP = False Then
Blue = ((Color \ &H10000) Mod &H100) + Value
Else
Blue = ((Color \ &H10000) Mod &H100)
Blue = Blue + ((Blue * Value) \ &HC0)
End If
Green = ((Color \ &H100) Mod &H100) + Value
Red = (Color And &HFF) + Value

'check red
If Red < 0 Then
Red = 0
ElseIf Red > 255 Then
Red = 255
End If
'check green
If Green < 0 Then
Green = 0
ElseIf Green > 255 Then
Green = 255
End If
'check blue
If Blue < 0 Then
Blue = 0
ElseIf Blue > 255 Then
Blue = 255
End If

ShiftColor = RGB(Red, Green, Blue)
End Function


调用: cShadow = ShiftColor(cFace, -&H40)
cLight = ShiftColor(cFace, &H1F)
cHighLight = ShiftColor(cFace, &H2F) 'it should be 3F but it looks too lighter
cDarkShadow = ShiftColor(cFace, -&HC0)

...全文
93 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
wumylove1234 2005-06-17
  • 打赏
  • 举报
回复
晕倒.你的Blog挂了......

看不了了!~~~:(
wumylove1234 2005-06-17
  • 打赏
  • 举报
回复
我晕死了,在看你Blog上那个压缩文件的算法,很多地方看不懂.....
wumylove1234 2005-06-17
  • 打赏
  • 举报
回复
啊.真不错.有你的Blog了,应该有更多的东西可以学啦.
homezj 2005-06-17
  • 打赏
  • 举报
回复
不是挂了,CSDN的Bolg就是这样,时好时坏
wumylove1234 2005-06-16
  • 打赏
  • 举报
回复
有什么办法啊/
不管什么需求不需求的,只为了学习!

另小吉再帮忙看一下另个帖子,无人回答中...
http://community.csdn.net/Expert/topic/4085/4085597.xml?temp=5.976504E-02
homezj 2005-06-16
  • 打赏
  • 举报
回复
这个函数作用就是将一个颜色值变量或变暗,在做按钮的悬停、按下等状态时,高亮,阴影的效果常是这样处理。不过,就是速度慢了些。

若你是这类需求,还有更好的办法。
homezj 2005-06-16
  • 打赏
  • 举报
回复
Long型颜色值不太适合GetBitmapBits等方法直接获取与运算,何况即便用上速度也不算最快的,高亮或阴暗处理,我感觉用AlphaBlend非常适合,速度极快,效果也算不错。我在一篇改造ToolBar的代码中用过
原文:
http://blog.csdn.net/homezj/category/114201.aspx
原理:
让前景与纯白背景做Alpha运算,得到高亮,让前景与纯黑背景做Alpha运算,得到阴暗。亮度与暗度通过Alpha取值调整

你的另一个贴子我刚看了,还没细心研究过,先帮你顶下。

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧