用VB制作家庭影集

你想拥有自己的电子家庭影集吗?其实用VB就能实现。方法如下:

准备:家庭普通照片经扫描后储存。

构想:照片一张接一张出现在屏幕中间,出现时的方式采取动态切换,上方一行标题从左向右移过, 标题与照片的背景色随机变化。

关键:调用Bitblt Windows API函数实现照片的动态切换。

内容:工程由Forml和modluel构成。

FORML中的内容如下:

Comst bmpfilemax=11 照片数目常量
Const bmpfile(bmpfilemax)As String照片的文件组
Dim brawbmpmode(bmpfilemax)As in-teger 照片的切换方式
Dim bmpnum,mouvstep,xmax,ymax,endmax,lleft,r,n ,As Integer 照片的序号,步进参数
Dim kxy As Single x y方向的比例
Private Sub Exit_Click( )
End
Ene Sub
Private Sub Form_Load( )
Labell.Lert=0
Labell.Caption="Family Album"
Picturel.AutoSize=True
Picturel,Visible=False
Bmpfile(0)=App,path+" \ sonl.jpg"
Bmpfile(1)=App.Path+" \ mom_sonl.jpg"
Bmpfile(2)=App.Path+" \daddy_son.jpg"
Bmpfile(3)=App.path+" \yu99yantai.jpg"
Bmpfile(4)=App.Path+" \yu98singap2.jpg"
Bmpfile(5)=App.Path+" \yu98singapore.jpg"
Bmpfile(6)=App.Path+" \mom_son2.jpg"
Bmpfile(7)=App.Path+" \yu99yan2.jpg"
Bmpfile(8)=App.Path+" \fami_ly.jpg"
Bmpfile(9)=App.Path+" \fan_yantai.jpg"
Bmpfile(10)=App.Path+" \yu99yan3.jpg"
Drawbmpmode(bmpnum) =1+int (Rnd()*4)
Movestep=0 步进参数
Xmax=Forml.scaleWidth/
Ymax=Forml.scaleHeight/
Kxy=ymax/xmax
Picture1.picture=LoadPicture(bmpfile(bmpnum))
Timerl.Interval=30
End Sub
Private Sub Timer1_Timer()
M=Forml.scaleWidth/_Pic_turel.width/照片显示结束时的X方向居中定位
N=Forml.scaleHeight/_Pic_turel.Height/照片显示结束时的Y方向居中定位
HDestDC=Forml.Hdc
HsrcDC=picture1.Hdc
Drawflag=drawbmpmode(bmpnum)照片显示时的切换方式
Select Case drawflag
Case1 切换方式为从左右向中间进行
Time Interval=30
Endmax=xmax
W=movestep
H=picture1,Height
I=BitBlt(hDestDC,0+m,0+n,w,h,hSrcDC,0,0SRCCORY)
X1=Picture,width_movestep
I=BitBlt(hDestDC,X1+m,0+n,w,h,hSrcDC,X1,0,SRCCOPY)

Case2切换方式为从中间向四周扩散进行

Timer1.Interval=30
Endmax=xmax
X1=xmax_movestep
W=movestep*2
Y1=cint(ymax-movestep*kxy)
H=cint(2*movestep)
I=BitBlt(hDestDC,X1+m,Y1+n,w,h,hSrcDC,X1,Y1,SRCCOPY)
Case3切换方式为栅栏翻转进行
Timer1.Interval=200
Ednmax=Cint(2*xmax/10)
Tempi=Cint(2*xmax/10)
W=movestep
H=Picture1.ScaleHeight
For ij=0 TO 9
I=BitBlt(hDestDC,tempi*ij+m,0+n,w,h,hSrcDC,tempi*ij,0,SRCCOPY)
Next ij
Case4切换方式为从左向右进行
Timer1.Interval=30
Endmax=xmax
W=movestep*2
H=Forml.ScaleHeight
I=BitBlt(hDestDC,0=m,0+n,w,h,hSrcDC,X1,Y1,SRCCOPY)
Ends Select
Forml.Refresh
Movestep=movestep+4
Labell.left=movestep
Ifmovestep>endmax+60Then
Bmpnum=bmpnum+1
Ifbmpnum>bmpfilemax then
Bmpnum=0
End IF
Cls
Movestep=0
Picture1.Picture=LoadPic_1+int(Rnd()*4)
Backcolor=QBColor(Rnd*15)
Labell.ForeClolr=QBColor(Rnd*10)
If backcolor=Labell.ForeColor Then
Labell.forecolor=vbBlack
End if
Labell.Caption=family album"
Labell.top=picturel.top
End if
End sub

Modluel中的内容如下:

Option explicit
Public comst SRCCOPY=&HCC0020(DWORD)dest=source
Declare Function BitBlt Lib"gdi32"(byval hDestDCAs_
Long,byval x as long,byval y as long ,byval n width_
Byval xsrc as long,byval ysre as long ,byval dwrop as long)as long

时间: 2024-12-31 01:09:56

用VB制作家庭影集的相关文章

VB: 制作下雪的特技景象

对于下雪的景象大家可能都不陌生,我们还是用VB来制作一个下雪的景象吧.其实制作这样一个下雪的景象并不复杂,它的原理是首先在底色为黑色的屏幕上随机画出许多白点(雪花),然后使这些雪花不断地向下移动(重画),反复循环,就成功地模拟了下雪的景象.下面是这个小程序,你可以修改其中的一些数据调整雪花的密度和雪花落下的快慢. 双击窗体写如下代码: Dim Snow(1000, 2), Amounty As Integer Private Sub Form_Load() Form1.Show DoEvents

VB制作的可以限制输入的文本框

文本框 通过继承TextBox,添加了一个ValidText属性,用来获取和设置有效的文本输入 还有一个EditAble属性,决定文本框是否支持退格编辑. 我是刚学习VB.Net,希望和大家交流,我得QQ:36745349 Public Class MyTextBox Inherits System.Windows.Forms.TextBox Private m_strValidText As String = "0123456789.+-" & Chr(13).ToStrin

用VB制作李萨如图形动态演示程序

1 引言 李萨如图形是一个质点的运动轨迹[1],该质点在两个垂直方向的分运动 都是简谐运动.李萨如图形是物理学的重要内容之一,在工程技术领域也有很重要的应用.利用李萨如 图形可以测量未知振动的频率和初相位,掌握李萨如图形的形成过程有很重要的意义.因而动态显示李 萨如可以深入理解其形成过程. 2 李萨如图形的形成 假定形成李萨如图形的两个简谐运 动,一个在X轴上,一个在Y轴上, 它们的运动方程为(假设它们的振幅相等):它们的合运动轨迹就是李萨如图形.为了能够形 象地描述李萨如图形的形成过程,一般是

VB制作QQ菜单

QQ的界面大家都不陌生吧?CtListBar就是一个十分优秀的第三方控件,利用它我们可以很轻松的做出一个象QQ一样的界面.这节中,我们将通过对CtListBar控件基本使用方法的学习,参照一个实例,打造出一个很酷的QQ菜单. CtListBar控件包含了许多很有用的方法和属性.开始实例学习前,我们有必要先对其主要的几个方法和属性了解一番.表一和表二分别列出了几个主要的方法和属性,以及它们的类型.说明.初步了解之后,现在我们就开始实例讲解. (表一) 方法 返回类型 说明 AddList inte

asp调用vb生成的dll文件,执行shell异步变同步的解决方法(带源代码)

vb|解决|源代码|执行|shell|异步|同步 阿里西西web开发团队在开发一个asp系统,需要同步调用vb(dll)执行的shell操作,asp->vb(dll)->shell->rar.exe同步执行exe文件. 由于shell是异步处理,这个问题让我们头疼了很久,最终还是通过百度找到了几个不错的函数,调试过,效果还不错,建议可以先用vb建exe来调试好了,再放入DLL编译给ASP调用. 代码如下: 以下是用vb制作一个exe文件进行调试,打开记事本和计算器示例:Private T

VC中利用FLASH制作图声并茂的动画程序

前言: FLASH是一种功能强大的矢量动画,可以制作出各种华丽的电影效果,应用非常广泛!这也给予我们一个启迪:如果在VC程序中能够播放FLASH动画,将为程序增色不少,而且许多原本不易实现的功能,现在都可以轻松实现! 像金山词霸的安装程序主控界面就利用了FLASH,效果相当好.本文中笔者将制作一个完整的多媒体软件,将一些关键性技术介绍给大家,并提供全部代码供大家参考. 本文使用到的关键性技术: (1)利用VB制作MS AGENT播放模块. (2)将该播放模块.FLASH动画文件SWF与其它必要资

vb6 0调用access出错-vb6.0制作的安装包读取access无法读到数据,是系统哪限制了?

问题描述 vb6.0制作的安装包读取access无法读到数据,是系统哪限制了? vb制作的安装包,在别的电脑运行正常,大概50台电脑(xp系统win7系统都有)试过都没问题,只有一个xp的,安装后不能从access数据库读到数据,程序调试显示独到的非空,但是想把读到的东西输出却输出空.请问是系统是么地方限制了软件的功能,还是限制了数据库索引的功能?怎么处理,哪位高手有办法啊? 解决方案 这个很难说,一些Windows XP的系统由于是山寨盗版,精简了什么组件,或者感染了360.百度等流氓病毒,导

想在用VB6.0制作的软件调用tom365和skyme站内搜索引擎,请问各位大虾该如何实现 0分

问题描述 想在用VB制作的软件调用tom365和skyme影视站内搜索引擎,请问各位大虾该如何实现我最近想制作一个集web浏览器盒与搜索框于一体的搜索类工具,可当我想直接调用tom365和skyme影视网站站内搜索引擎时,却无论如何也不知道其调用参数,就比如在搜索框可以直接输入http://www.baidu.coms?wd=待搜索关键字,然后浏览器就可以直接调用百度搜索引擎进行关键字的搜索,直接把百度搜索结果页面给打开(为什么baidu可以这样调用,而tom365和skyme却不能呢,希望这个

VB实现的倒计时类代码详解_vb

本文所述为用VB制作倒计时程序用到的一个Module类代码,是基于控制台的倒计时程序,可供VB初学者或者VB爱好者参考学习,当然读者也可以将其拷贝代码到VB工程里面直接使用,不过需要自己创建相关的代码,对于初学者来说,也是很容易看懂的一段代码. 具体功能代码如下: Module Module1 Sub Main() Dim a As Date Dim h, m, s As Integer Dim n, i As Long Dim x, z As Long Dim y As Long Consol