- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
一道炫目的闪光在图像上从左至右徐徐掠过,相信如果把这样的特效应用到程序的界面上一定能为你的程序增色不少。这样的特效到底是怎样实现的呢?让我们一起来分析一下,这是本特效在某一瞬间的截图,可以看出沿着一条倾斜的扫描线,它周围的象素都按照近强远弱(距扫描线)的规律增强亮度(当然,扫描线并不显示出来,它只是一个抽象的概念,以方便我们的编程工作)。当扫描线从图像最左端平滑地移动到图像最右端的时候,由于视觉暂留作用,看起来就会有熠熠生辉的效果。那么怎样加强像素的亮度呢?可不能直接增大像素的颜色值,因为像素的颜色值是一个长整形数值,使用4个字节表示,最高位的字节的值为0,其它3个字节依次是B、G、R值,所以要加强像素的亮度,就要分别增加B、G、R值的大小。由于这是个动态特效,静态图片很难表达清楚,读者可先运行一下代码以帮助理解。
为了使本特效更灵活、更实用,笔者定义了几个参数,可以通过参数对特效做调整以达到满意的效果。
参数表-----------------------------------------------------
Angle ??????? 光照倾角,取值0到90之间,以角度为单位
WidthOfArea?? 光照区宽度,取值大于1的整数,以像素为单位
Speed???????? 光照区运动速度,取值大于1的整数
EnhanceRatio? 光照强度参数,取值大于1的整数
-----------------------------------------------------
好,原理就这么多,现在我们开始动手实现吧!打开VB6.0,选择新建标准EXE工程,在主窗口form1中绘制下表中所列控件并设置窗体和各控件的属性。
控件 属性 设置 Form1 Name Form1 ScaleMode 3-pixel PictureBox Name PicDest ScaleMode 3-pixel Picture 背景图 PictureBox Name PicSource ScaleMode 3-pixel Picture 主体图 Label Name LblA Caption 角度 Textbox Name TxtA Text 30 Label Name LblW Caption 宽度 Textbox Name TxtW Text 15 Label Name LblE Caption 强度 Textbox Name TxtE Text 15 Label Name LblS Caption 速度 Textbox Name TxtS Text 1 CommandButton Name Cmd1 Caption 开始特效 ? 生成最后的窗体。
在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, _
Enhan
您可能关注的文档
- 网络安全总结.doc
- 网络编程复2习题.doc
- 网络操作系统考试点.doc
- 网络操作系统全国2006年4月试题.doc
- 网络程序设计基础复习题.doc
- 网络对战象棋游戏.doc
- 网络工程本科专业简介.doc
- 网络工程概论.doc
- 网络共享器多用户电脑共享器LD-680A用户手册.doc
- 网络集成.doc
- 2-红河州建筑施工安全生产标准化工地复核评分表(2022年修改版).docx
- 6.锡通项目2018年下半年工作会汇报材料(2018.7.9).docx
- 2018道路工程知识点汇总(新版).docx
- 附件3:月度生产例会安全汇报资料-站台门项目部.docx
- 附件2:广东建工集团2018年度科技成果汇总表.DOC
- 马武停车区、三汇停车区停车位管理系统,0#台账缺量.doc
- 攀成钢委办发〔2015〕19号(党风廉政建设责任考核与追究办法).doc
- 1-红河州建筑工程质量管理标准化复核评分表(2022年修改版).docx
- 中交第三公路工程局第四工程分公司项目经济合同结算管理办法(修订).doc
- 厂站安全操作规程汇编.doc
文档评论(0)