新客网WWW.XKER.COM:致力做中国最专业的网络学院!
学院: 操作系统 - 网络应用 - 服务器 - 网络安全 - 工具软件 - 办公软件 - Web开发 - 数据库 - 网页设计 - 图形图像 - 媒体动画 - 硬件学堂 - 存储频道 - QQ专区
您的位置:首页 > 软件开发 > 开发语言 > VB教程 > 正文:用VB编程实现图像的熠熠生辉效果

用VB编程实现图像的熠熠生辉效果

新客网 XKER.COM 2007-02-01 来源: 收藏本文
  一道炫目的闪光在图像上从左至右徐徐掠过,相信如果把这样的特效应用到程序的界面上一定能为你的程序增色不少。这样的特效到底是怎样实现的呢?让我们一起来分析一下,这是本特效在某一瞬间的截图,可以看出沿着一条倾斜的扫描线,它周围的象素都按照近强远弱(距扫描线)的规律增强亮度(当然,扫描线并不显示出来,它只是一个抽象的概念,以方便我们的编程工作)。当扫描线从图像最左端平滑地移动到图像最右端的时候,由于视觉暂留作用,看起来就会有熠熠生辉的效果。那么怎样加强像素的亮度呢?可不能直接增大像素的颜色值,因为像素的颜色值是一个长整形数值,使用4个字节表示,最高位的字节的值为0,其它3个字节依次是B、G、R值,所以要加强像素的亮度,就要分别增加B、G、R值的大小。由于这是个动态特效,静态图片很难表达清楚,读者可先运行一下代码以帮助理解。

  为了使本特效更灵活、更实用,笔者定义了几个参数,可以通过参数对特效做调整以达到满意的效果。

    参数表-----------------------------------------------------

  Angle 光照倾角,取值0到90之间,以角度为单位

  WidthOfArea 光照区宽度,取值大于1的整数,以像素为单位

  Speed 光照区运动速度,取值大于1的整数

  EnhanceRatio 光照强度参数,取值大于1的整数

  

  -----------------------------------------------------

  

  好,原理就这么多,现在我们开始动手实现吧!打开VB6.0,选择新建标准EXE工程,在主窗口form1中绘制下表中所列控件并设置窗体和各控件的属性。

  



  生成最后的窗体。

  

  在form1的代码编辑窗口中添加如下代码

  

  Option Explicit

  

  Const pi = 3.1415926

  

  'api函数声明------------------------------------------------------------

  Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _

  (Destination As Any, Source As Any, ByVal Length As Long) '拷贝内存

  

  Private Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, _

  ByVal X As Long, ByVal Y As Long) As Long '取像素值

  

  Private Declare Function SetPixel Lib "gdi32" (ByVal hdc As Long, _

  ByVal X As Long, ByVal Y As Long, ByVal crColor As Long) As Long '设置像素值

  

  Private Sub cmd1_Click()

  cmd1.Enabled = False

  MakeSpark txtA, txtW, txtS, 0, txtE, 65, 10

  cmd1.Enabled = True

  End Sub

  

  Private Sub MakeSpark(Angle As Long, WidthOfArea As Long, _

  Speed As Long, MaskColor As Long, _

  EnhanceRatio As Single, OffsetX As Long, OffsetY As Long)

  '熠熠生辉效果

  '参数表-----------------------------------------------------

  'Angle 光照倾角

  'WidthOfArea 光照区宽度

  'Speed 光照区运动速度

  'MaskColor 主体图的屏蔽色

  'EnhanceRatio 光照强度参数

  'OffsetX 主体图叠加到目标图时的 X 偏移

  'OffsetY 主体图叠加到目标图时的 Y 偏移

  

推荐文章:电眼美女林熙蕾火辣激情壁纸  少儿止步 性感壁纸欣赏


共2页: 上一页 [1] [2] 下一页
收藏】 【评论】 【推荐】 【投稿】 【打印】 【关闭
发表评论
要记得去论坛讨论,点击注册新会员匿名评论
评论内容:不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
阅读排行
随机推荐
实用信息推荐