说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

在VB中利用API实现窗体的平滑显示

HTML文档下载 WORD文档下载 PDF文档下载
在VB中利用API实现窗体的平滑显示


 Win98的一个新功能是窗体能够平滑显示,那我们是否能编程来实现这种功能呢?答案是肯定的。首先讲述一下原理,其实我并没有让窗体本身平滑地显示,而是在窗体显示之前在窗体的位置上画一系列的矩形,利用视觉暂留让人以为是窗体在从小变大。
  下面就用VB来实现这种功能。
  建立两个窗体form1和form2,在form1上添加如下控件:由五个optionbutton控件组成的控件数组,index为0-4,caption属性分别为“从中间扩散”、“右上到左下”、“左上到右下”、“右下到左上”和“左上到右下”,一个commandbutton,caption属性为“显示窗体”, 添加一个模块其中代码如下:
   Option Explicit
  `声明所用的API函数、常量和变量
  Public Declare Function GetDC Lib “user32” (ByVal hwnd As Long) As Long
   Public Declare Function Rectangle Lib “gdi32” (ByVal hdc As Long, _
   ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2_
   As Long) As Long
   Public Declare Function SelectObject Lib “gdi32” (ByVal hdc As Long, _
   ByVal hObject As Long) As Long
   Public Declare Function DeleteObject Lib “gdi32”(ByVal hObject As _
   Long) As Long
   Public Declare Function ReleaseDC Lib “user32” (ByVal hwnd As Long,_
   ByVal hdc As Long) As Long
   Public Declare Sub Sleep Lib “kernel32” (ByVal dwMilliseconds As Long)
   Public Declare Function CreateSolidBrush Lib “gdi32” (ByVal crColor As_
   Long) As Long
   Public Declare Function GetBkColor Lib “gdi32” (ByVal hdc As Long) As Long
   Public hbrush As Long, hdc5 As Long
   Public dx As Long, dy As Long
   Public rx1 As Long, rx2 As Long, ry1 As Long, ry2 As Long
   Public i As Long, j As Long, bcolor As Long
   Public ind As Integer
   Public DispCnt As Long
  
  Public Sub showform(win As Form, ind)
   DispCnt = 60 `画几个矩形后显示窗体
   `下面这段代码用来获得窗体颜色,不用me.backcolor的原因是窗体颜色不一定是系统调色板的颜色,如果用me.backcolor的话颜色可能会不准。
   hdc5 = GetDC(0)
   bcolor = GetBkColor(win.hdc)
   hbrush = CreateSolidBrush(bcolor)`设定刷子颜色
   Call SelectObject(hdc5, hbrush)
   dx = win.Width \ (DispCnt)
   dy = win.Height \ (DispCnt)
   j = 1
   Select Case ind
   Case 1
   dx = dx \ 2; dy = dy \ 2
   For i = DispCnt To 1 Step -1
   rx1 = (win.Left + dx * (i - 1)) \ Screen.TwipsPerPixelX
   ry1 = (win.Top + dy * (i - 1)) \ Screen.TwipsPerPixelY
   rx2 = rx1 + dx * 2 * j \ Screen.TwipsPerPixelX
   ry2 = rx1 + dy * 2 * j \ Screen.TwipsPerPixelY
   j = j + 1
   Call Rectangle(hdc5, rx1, ry1, rx2, ry2)
   Sleep (1); Next i
  Case 2
   For i = DispCnt To 1 Step -1
   rx1 = (win.Left + win.Width - dx * j) \ Screen.TwipsPerPixelX
   ry1 = win.Top \ Screen.TwipsPerPixelY
   rx2 = (win.Left + win.Width) \ Screen.TwipsPerPixelX
   ry2 = (win.Top + dy * j) \ Screen.TwipsPerPixelY
   j = j + 1
   Call Rectangle(hdc5, rx1, ry1, rx2, ry2)
   Sleep (1); Next i
   Case 3
   For i = DispCnt To 1 Step -1
   rx1 = win.Left \ Screen.TwipsPerPixelX
   ry1 = win.Top \ Screen.TwipsPerPixelY
   rx2 = rx1 + dx * j \ Screen.TwipsPerPixelX
   ry2 = rx1 + dy * j \ Screen.TwipsPerPixelY
   j = j + 1
   Call Rectangle(hdc5, rx1, ry1, rx2, ry2)
   Sleep (1); Next i
   Case 4
   For i = DispCnt To 1 Step -1
   rx1 = (win.Left + dx * (i - 1)) \ Screen.TwipsPerPixelX
   ry1 = (win.Top + dy * (i - 1)) \ Screen.TwipsPerPixelY
   rx2 = (win.Left + win.Width) \ Screen.TwipsPerPixelX
   ry2 = (win.Top + win.Height) \ Screen.TwipsPerPixelY
   j = j + 1
   Call Rectangle(hdc5, rx1, ry1, rx2, ry2)
   Sleep (1); Next i
   Case 5
   For i = DispCnt To 1 Step -1
   rx1 = (win.Left) \ Screen.TwipsPerPixelX
   ry1 = (win.Top + win.Height - dy * j) \ Screen.TwipsPerPixelY
   rx2 = (win.Left + dx * j) \ Screen.TwipsPerPixelX
   ry2 = (win.Top + win.Height) \ Screen.TwipsPerPixelY
   j = j + 1
   Call Rectangle(hdc5, rx1, ry1, rx2, ry2)
   Sleep (1); Next i
   End Select
  Call ReleaseDC(0, hdc5)`释放设备描述表
  Call DeleteObject(hbrush)`删除刷子
  End Sub
  在form1中输入如下代码
  Private Sub Command1_Click()`显示窗体
  Unload Form2
  Load Form2
  Form2.Show
  End Sub
  
  Private Sub Form_Load()
   ind = 1`初始化参数
  End Sub
  
  Private Sub Option1_Click(Index As Integer)
  Select Case Index
   Case 0
   ind = 1
   Case 1
   ind = 2
   Case 2
   ind = 3
   Case 3
   ind = 4
   Case 4
   ind = 5
   Case 5
   ind = 6
   End Select
  
  End Sub
  在form2中输入如下代码
  Private Sub Form_Load()
   Call showform(Me, ind)
  End Sub
  本程序调用了一些有关系统和绘图的API函数,有利于大家进一步了解API函数的功能。本程序在vb5企业版,Win98中运行通过。
初创公司Ionic Security:云安全必须与时俱进 谷歌董事长:一年后消费者才能用上Goolge Glass Windows 8.1重新推出的“开始按钮”毫无意义 手眼并用 代码泄露三种Google Glass手势操作 Google新论文 CPI²:基于Linux的世界级跨数据中心服务器CPU监控 20款非常实用的Web工具和资源列表 数据库界大事件 随机写性能巨好的TokuDB开源了 CMDN Club 26期:数字渠道营销主题沙龙 暴强:用iOS设备控制的HTML5“小蜜蜂”游戏 Leap Motion:500元体感,精确到0.01毫米 大事件:三大运营商将发布融合计费SDK 再培养一个扎克伯克:六款适合儿童上手编程的App 首届中国软件工程标准高峰论坛:软件开发的新机遇与挑战 Verizon研究显示:中国成为2012年度网络间谍攻击的主要来源 Clang宣布全面支持C++11标准 北大陈钟:SEMAT—中国软件工程发展的新机遇 超华尔街预期:苹果第二财季营收为436亿美元 跨平台游戏引擎Spaceport已被Facebook收购 文科生开发GPU数据库 性能超传统数据库70倍 开发者赚了90亿:从苹果Q2财报,看iOS生态 备受开发者青睐的13款热门开源项目 Netflix赌赢《纸牌屋》背后的秘密武器:大数据分析 为什么:Google Glass只能运行Web应用? 对话Rackspace高级副总裁Jim Curry:我们没有"辜负"营销炒作 7个大数据流言——避免错误的Hadoop和云分析决策 Facebook vs. Google:撇开搜索,数据中心产业上的又一竞技 苹果将于6月10日召开WWDC 新版OS X和iOS或将面世 传Amazon今年秋季发布电视机顶盒设备 够快:不会3种以上语言的程序员不是好程序员 Cloud Foundry、Greenplum获通用电气1亿美元注资 微软推超强Android应用Switch to Windows Phone 帮我看看,51476905 有关tc的一些问题? 我的电脑上发现Folder.HTT病毒,怎么办? 拆了硬盘,再安装,但进不了win98,急 ! jsp调用javabean需要做那些步骤啊?在线等待,马上接贴! 有重庆的考程序员的吗?重庆什么时候考(留下你的联系方法) 立项建议书 vb画圆 立项建议书 请教关于数据库的问题 如何信达地翻译这句话? 请大家 推荐一些比较难的书(散分) 请问那里有isa server的中文教程下载?谢谢。 高手助我! 在VB中,用SQL语句时,怎样用函数。 图标在上网的时候改变,请问这是怎么回事? 编一个电话簿程序都需要哪些控件? powerbuild 在社会上用在那些方面 ? 请教一个问题:在word中能实现双面打印吗? 关于写文本文件的问题 怎么改密码啊?! 哪里有pb的电子图书下?在线等待 高分求avi播放器源代码(不使用控件) cab文件 关于crystal report export 的问题 XML带的?是什么?? 如何实现数据库CLIENT的用户之间的交互,即一旦一个用户更改了某项数据,其它用户能立刻知道,并能作出反应? 没有控制面板如何设置Delphi快捷键? 连接上网成功后会产生什么事件或者消息? 怎么定位treeview和listview? 哪里有DEIPHI5程序员参考这本书可以下载? ds,dt,dv数据绑定的时候,那个是最佳选择? 谁有串口通讯的控件comm32.zip,spcomm.zip,async32.zip,commst.zip? 游戏开发需要具备哪些知识? 在DELPHI中怎么命令调用外部exe文件?1 java运行环境参数 关于Apache 1.3和Tomcat 4.01结合使用的问题,搞不定了,请帮帮忙! 十万火急?请进!!! IBM 有自己的jkd吗? 哪位北京的朋友能帮我一下,给我妹妹找点事做 在DELPHI里面有没有读取时间的函数,其精确到毫秒的??急救。 小程序改错?急!!!请大家帮忙!!! 问题很小,给分不少 高手请进!!!!???急急急急急急 3个菜问题,请高人给答? 数据存储怎么写事件 局域网中如何隐藏网上邻居? 为什么这个api在w2k下没效果,而在wxp下可以。 求助,急需isa server的教程。请各位帮忙提供下载,谢谢。 win2000的非常奇怪的问题 linux的安全 万能电源模块的黑线接大电容的负极红线接开关管的集电极可是集电极和大电容的正极是相通的直接接在正极万能电源模块的黑线接大电容的负极红线接开关管的集电极可是集电极和大电容 溶剂温度加热到闪点以上是不是比较危险? (创新题)下列各项描述中,说明绿色化学的特点的是( ).下列各项描述中,说明绿色化学的特点的是( ).①充分利用资源和能源,采用无毒、无害的原料②在无毒、无害的条件下进行反应, 手电筒的钢片是?A正极 B负极 C导线 这种电动车防盗器几条线的接法与说明? 绿色化学产品有什么特征求答案 现有CO和H2的混合气体VL,当其完全燃烧时,需要氧气的体积是?如题. 闪点(℃):是不是21度就燃烧.还有爆炸上限%(V/V):55.爆炸下限%(V/V): 烛焰通过凸透镜恰好在光屏上形成一个缩小\倒立的像,保持透镜位置不充,把烛焰和光屏的位置对调一下,则A.仍能呈现一个缩小\清晰的像 B.将能呈现一个放大\清晰的像 C.光屏上不能呈现 有体积比为1:1:x的H2 CO CH4 混合气体VL .当其完全燃烧时所需氧气的题及为1.25V 则X是如题 电动车防盗器哪个牌子的好?价格多少? 烛焰通过凸透镜恰好在光屏上得到一个倒立缩小的像,若保持透镜的位置不变,把烛焰和光屏位置对调一下,则:A、光屏上仍呈缩小的像B、光屏上不能成像C、光屏上呈放大的像D、光屏上无像, 今有H2和CO(体积比为1:3)的混合气体VL,当其完全燃烧时所需氧气的体积是几VL?要过程分析哦.谢谢了 京沪高速共路全长大约1200千米.一辆大卡车和一辆小货车分别同时从北京和上海出发分别同时从北京和上海出发,相向而行,经过6小时在途中相遇,如果大客车的速度是小客车的11分之9,两辆车的 当烛焰离凸透镜30cm时,在凸透镜另一侧的光屏上可得到一个倒立、放大的实像,该凸透镜的焦距可能是?说出范围就行了 天然气用化学式写出来? 圆柱和圆椎的计算公式(简单点啦)体积,面积都要 烛焰通过凸透镜恰好在光屏上得到一个缩小倒立的像,若保持透镜位置不变,把烛焰和光屏的位置对调一下,则光屏上( ).A.仍能呈现一个缩小的像 B.将能呈现一个放大的像 C.不会呈现放大或缩小 li代表什么元素.18克水中含有的质子数为什么?存在NaCl分子吗? 求圆、圆锥、圆柱的计算公式要字母的圆、圆锥、圆柱的全部计算公式 焰通过凸透镜恰好在光屏上得到一个缩小倒立的像,若保持透镜位置不变.把烛焰与光屏的位置对调一下,则我知道答案是成放大的像 可是为什么 移动位置就会在一倍焦距和两倍焦距之间呢 求 废活性炭怎么处理最好 什么物质和氢气反应能生成co2 6年级上册语文第4单元作文建议书(关于汽车尾气)如果很赞加悬赏!要500字以上 “我们维修了实验室中的烘箱.”用英语怎么说啊 二氧化碳与一定比例氢气混合生成什么?只需一种就可以实现零排放的 对减少汽车尾气的合理建议必须合理至少三条 战斗力只有5的渣渣英语怎么说 将蜡烛放在距离凸透镜30CM的地方,在透镜另一侧的光屏上,有蜡烛清晰放大的像,该透镜的焦距可能是A 20cm B 15cmC 10cmD 5 cm HF 水 氨气的溶沸点高低顺序是什么? 将一只220V,40W的灯泡与一只220V,100W的灯泡并联,接于220V的电源上,哪个亮?为什么?串联呢? 把蜡烛放在里凸透镜远大于2倍焦距的地方,在光屏上出现了明亮,清晰的烛焰的像,完成光路图(无视掉我画的) 为什么氢化钠沸点比氨气高 凸透镜粘上了黑点,用它做蜡烛成像实验时,在光屏上( ) A.有烛焰像也有黑点 B.只有黑点没有烛焰像 C.像全部消失 D.有较暗的烛焰像,没有黑点 二氧化碳和氢气反应,只生成一种产物就能实现"零排放",这种产物是什么? 关于绿色化学零排放的绿色化学”能实现零排放(即反应物中的原子利用率达到100%).CO2和H2在一定条件下按照不同的比例可以合成不同的化工原料.根据零排放的要求,以CO2和H2合成的下列物 天然气的化学式是什么? 把蜡烛,凸透镜,光屏位于同一条直线上,对吗, 现在,街上有大量的汽车,这些汽车排出的尾气污染了空气,破坏了环境,你的建议是什么 H2和CO的混合气20mL,在完全燃烧时,共消耗相同条件的氧气10ML,则原混合气中CO和H2的体积比为?各位大哥大姐,请帮小妹一下忙,做初中化学时碰到的一道题,有答案但没解析,希望各位详细讲解一下, 将蜡烛放在凸透镜前,在光屏上得到清晰的像,已知虚线上黑点是蜡烛和它的像的连线的中点请画出凸透镜 凸透镜焦距11cm,蜡烛在距凸透镜30cm处,在光屏上获得清晰的像后,在蜡烛于透镜之间再放一个凸透镜为了得到清晰的像,光屏应向(. )透镜方向移动.括号内填''靠近'' 或''远离''. 为什么? 喜欢化学的请进来!如果要完全燃烧10ml 的氢气和20ml的CO,需要多少体积的氧气?(假设都是在相同的喜欢化学的请进来!如果要完全燃烧10ml 的氢气和20ml的CO,需要多少体积的氧气?(假设都是 听说您擅长物理,将蜡烛,凸透镜,光屏放在同一个高度上目的是 ZMOMD 倒车摄像头,五线2红线2黑线1黄线,怎么接? CO和氢气的混合气体10ml,完全燃烧共用去氧气5ml,相同条件下混合气体中CO和氢气的体积比是多少 踏板摩托车电瓶上两根红线和一根黑线用摇表测量 ,拆线后踏板摩托车电瓶上两根红线和一根黑线 测量红线(粗)与黑线之间电阻为无穷大,红线(细)与黑线间电阻为零 这样正常吗 在城市规划中,红线,蓝线,黄线,白线等,分别代表什么? 当蜡烛距凸透镜40厘米时,在离改透镜30厘米的光屏上能得到一个清晰的烛焰像;当蜡烛移到与该透镜的距离为30厘米时,则在光屏上( )A 一定成一个放大的像 B一定成一个缩小的像 C可能成一 甲、乙两辆汽车同时从上海出发,沿京沪高速向北京驶去.甲车每小时行120千米,乙车每小时行85千米.几小时后 建筑领域中的红线、绿线、黄线等有什么区别,各自的意义又是什么 溶剂回收怎样的活性炭比较合适求具体情况 有具体规格最好 将220V.100W白炽灯接在220V的直流电源时的亮度和把它接在220V交流电源时的亮度是否一样,为什么? 压力锅内部的气压算是大气压吗 高转低四根线是接几个喇叭呢!是一个喇叭的正极接它的两根红线 负极接两根黑线吗!一个喇叭接它的高转低四根线是接几个喇叭呢!是一个喇叭的正极接它的两根红线 负极接两根黑线吗!一个 1度电可供“220V,100W”的电灯正常发光 小时 过热器疏水阀有什么作用? 红线是正极还是负极 把一个额定电压是220V的电灯,分别接到220V的交流电源和直流电源上,电灯的发光情况为( )A.接交流比接直流亮 B.接交流不如接直流亮 C.一样亮 D.不一定 绿色化学的兴起及其特点
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘