多媒体软件设计技术.docx

上传人:b****4 文档编号:3991955 上传时间:2022-11-27 格式:DOCX 页数:14 大小:857.86KB
下载 相关 举报
多媒体软件设计技术.docx_第1页
第1页 / 共14页
多媒体软件设计技术.docx_第2页
第2页 / 共14页
多媒体软件设计技术.docx_第3页
第3页 / 共14页
多媒体软件设计技术.docx_第4页
第4页 / 共14页
多媒体软件设计技术.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

多媒体软件设计技术.docx

《多媒体软件设计技术.docx》由会员分享,可在线阅读,更多相关《多媒体软件设计技术.docx(14页珍藏版)》请在冰豆网上搜索。

多媒体软件设计技术.docx

多媒体软件设计技术

《多媒体软件设计技术》

课程设计报告书

 

课程名称:

多媒体软件设计技术

指导教师:

杨岚老师

 

二○一二年六月

 

一.引言

本次课程设计是为了考察我们对VisualBasic的综合运用能力,着重于多媒体方面的设计。

在程序设计的过程中曾参考过有关的资料,并借鉴了一些内容。

要求:

1、用VisualBasic6.0编写程序,设计并实现一个多媒体应用程序。

2、程序必须带注释,分为“注释到过程(函数)”和“注释到单条语句”两种注释方式,其中“注释到单条语句”评分较高,“注释到过程(函数)”评分较低;无注释或少注释将酌情扣分。

3、所有相关文件保存在文件名:

学号_姓名文件夹内。

4、选题说明:

学号最后一位数字表示所选题号,如:

201004134112选题为2号题;201004134130选题为10号题;

5、严禁抄袭,一旦发现有雷同设计,同时取消成绩。

二.设计课题

设计图像多种切换效果。

要求:

1:

必须有淡入、淡出、翻转、滑入、旋转引入等效果;2;设计菜单

三.程序设计内容

程序运行情况

设计界面

程序界面

图片的切换效果

滑入

程序源代码

PublicStopProgramAsBoolean'定义开始按钮的能否开始

PublicSwapPicsAsBoolean

PrivateEnumSideSelecting

Off=0

HV=1

LRDU=2

All=3

EndEnum

DimAAsInteger'A进入速度变量

DimBAsInteger'B单步刷新变量

DimCAsInteger'C条宽度

PrivateSubcmdStart_Click()

StaticStartModeAsBoolean'设置开始按钮的caption属性

IfNotStartModeThen

IfNotIsReadyThenExitSub

cmdStart.Caption="停止"

StartMode=True

RunEffect

Picture1.Refresh

StartMode=False

IfStopProgramThenExitSub

IfSwapPicsThen

'BitBltPicture2.hdc,0,0,640,480,Picture3.hdc,0,0,SRCCOPY

'BitBltPicture3.hdc,0,0,640,480,Picture1.hdc,0,0,SRCCOPY

SwapPicturesPicture1,Picture2,Picture3

EndIf

Picture2.Refresh

Picture3.Refresh

cmdStart.Caption="开始"

Else

mblnRunning=False

cmdStart.Caption="开始"

StartMode=False

EndIf

EndSub

PrivateSubForm_Load()

WithList1'list的选项

.AddItem"滑入"

.AddItem"从外向内滑入"

.AddItem"从内向外滑入"

.AddItem"缩放推入"

.AddItem"从内缩放推入"

.AddItem"淡入"

.AddItem"融入"

.AddItem"百叶窗"

.AddItem"旋转引入"

.AddItem"圆形切出"

.AddItem"扇形切入"

.AddItem"双面斜切入"

.AddItem"斜切入"

.AddItem"斜切出"

EndWith

StopProgram=False

lngSpeed=1

List1.ListIndex=0

SetPicture1.Picture=LoadPicture(App.Path&"\Effect-x1.jpg")

SetPicture2.Picture=LoadPicture(App.Path&"\Effect2-x1.jpg")

SetPicture3.Picture=LoadPicture(App.Path&"\Effect-x1.jpg")

EndSub

PrivateSubForm_QueryUnload(CancelAsInteger,UnloadModeAsInteger)

mblnRunning=False

StopProgram=True

UnloadMe

EndSub

PrivateSubFrame6_DragDrop(SourceAsControl,xAsSingle,yAsSingle)

EndSub

PrivateSubList1_Click()

A=1'滑入速度设为1

SelectCaseList1.ListIndex'选择list的内容风别为0到13

Case0'滑入

B=5'B单步刷新变量设为5

Case1'从外向内滑入

B=4'B单步刷新变量设为4

Case2'从内向外滑入

B=4'B单步刷新变量设为4

Case3'缩放推入

B=5

Case4'从外向内推入

B=5'B单步刷新变量

Case5'淡入

B=2'B单步刷新变量

Case6'融入

B=5

C=1'设置条大小为1

Case7'百叶窗

A=50

B=1

C=20

SelectCaseList1.ListIndex

Case8

B=5

Case9

B=5

Case10

B=5

Case11To13

B=10

EndSelect

CaseElse

EndSelect

EndSub

PrivateFunctionGetSideLRDU()AsLong

GetSideLRDU=4

EndFunction

PrivateFunctionGetSideHV()AsLong

GetSideHV=1

EndFunction

PrivateFunctionGetPushMode()AsLong

GetPushMode=1

EndFunction

PrivateSubRunEffect()

SwapPics=True

SelectCaseList1.ListIndex

Case0

WipePicture1,Picture2,GetSideLRDU,CLng(B)'执行滑入函数

Case1

Wipe_InPicture1,Picture2,GetSideHV,CLng(B)'执行从外向内滑入

Case2

Wipe_OutPicture1,Picture2,GetSideHV,CLng(B)'执行从内向外滑入

Case3

DimiAsLong

i=1

StretchingPicture1,Picture3,Picture2,i,CLng(B),,GetPushMode'执行缩放推入

Case4

Stretching_Wipe_InPicture1,Picture3,Picture2,GetSideHV,CLng(B),,GetPushMode'执行从外向内推入

Case5

RandomLinesPicture1,Picture2,GetSideHV,CLng(B)'执行淡入

Case6

Bars_DrawPicture1,Picture2,GetSideHV,CLng(B),CLng(C)'执行融入

Case7

Bars_WipePicture1,Picture2,GetSideLRDU,CLng(B),CLng(C)'执行百叶窗

Case8

MaskEffectPicture1,Picture2,1,Me.hdc,CLng(B)'执行旋转引入

Case9

MaskEffectPicture1,Picture2,2,Me.hdc,CLng(B)'执行圆形切出

Case10

MaskEffectPicture1,Picture2,3,Me.hdc,CLng(B)'执行扇形切入

Case11

MaskEffectPicture1,Picture2,4,Me.hdc,CLng(B)'执行双面斜切入

Case12

MaskEffectPicture1,Picture2,5,Me.hdc,CLng(B)'执行斜切入

Case13

MaskEffectPicture1,Picture2,6,Me.hdc,CLng(B)'执行斜切出

EndSelect

EndSub

PrivateSubquit_Click()

End

EndSub

(部分模块)

PublicSubAlpha_Wipe(DestPicAsPictureBox,PrevPicAsPictureBox,NewPicAsPictureBox,FlagAsLong,OptionalBarSizeAsLong=50,OptionalStepsAsLong=5)

Dimr1AsLong,g1AsLong,b1AsLong

Dimr2AsLong,g2AsLong,b2AsLong

DimrmAsLong,gmAsLong,bmAsLong

DimyAsLong

IfIsReadyThen

Ended=False

DimpxWidthAsLong,pxHeightAsLong

DimScreenTXAsLong,ScreenTYAsLong

DimXlengAsLong,CntrAsLong

Dimt1AsLong,t2AsLong

ScreenTX=Screen.TwipsPerPixelX

ScreenTY=Screen.TwipsPerPixelY

pxWidth=DestPic.ScaleWidth\ScreenTX

pxHeight=DestPic.ScaleHeight\ScreenTY

SelectCaseFlag

Case1'擦除

Xleng=pxWidth+BarSize

Case2'过渡

Xleng=255

Case3

Cntr=1

Xleng=Sqr(pxWidth*pxWidth+pxHeight*pxHeight)/2

Xleng=Xleng+BarSize

EndSelect

DimUBAsLong,UB2AsLong

GetObjectAPIDestPic.Picture,Len(Bmp1),Bmp1

GetObjectAPIPrevPic.Picture,Len(Bmp3),Bmp3

GetObjectAPINewPic.Picture,Len(Bmp2),Bmp2

WithSA1

.cbElements=1

.cDims=2

.Bounds(0).lLbound=0

.Bounds(0).cElements=Bmp1.bmHeight

.Bounds

(1).lLbound=0

.Bounds

(1).cElements=Bmp1.bmWidthBytes

.pvData=Bmp1.bmBits

EndWith

WithSA2

.cbElements=1

.cDims=2

.Bounds(0).lLbound=0

.Bounds(0).cElements=Bmp2.bmHeight

.Bounds

(1).lLbound=0

.Bounds

(1).cElements=Bmp2.bmWidthBytes

.pvData=Bmp2.bmBits

EndWith

WithSA3

.cbElements=1

.cDims=2

.Bounds(0).lLbound=0

.Bounds(0).cElements=Bmp3.bmHeight

.Bounds

(1).lLbound=0

.Bounds

(1).cElements=Bmp3.bmWidthBytes

.pvData=Bmp3.bmBits

EndWith

CopyMemoryByValVarPtrArray(Pic1),VarPtr(SA1),4

CopyMemoryByValVarPtrArray(Pic2),VarPtr(SA2),4

CopyMemoryByValVarPtrArray(Pic3),VarPtr(SA3),4

mblnRunning=True'开始循环

DoWhilemblnRunning

IfmlngTimer+lngSpeed<=GetTickCount()Then

'BitBlting

IfCntr>=XlengThen

SetDestPic.Picture=DestPic.Picture

UB=UBound(Pic1,1)+1

UB2=UBound(Pic1,2)+1

CopyMemoryPic1(0,0),Pic2(0,0),UB*UB2

CopyMemoryPic2(0,0),Pic3(0,0),UB*UB2

CopyMemoryPic3(0,0),Pic1(0,0),UB*UB

CopyMemoryByValVarPtrArray(Pic1),0&,4

CopyMemoryByValVarPtrArray(Pic2),0&,4

CopyMemoryByValVarPtrArray(Pic3),0&,4'停止

mblnRunning=False'新图片可以使用更多的bitblt.

ExitSub

EndIf

SelectCaseFlag

Case1'擦除

t2=UBound(Pic1,1)-3

t1=UBound(Pic1,2)

Forint_i=0Tot2Step3

Forint_j=0Tot1

GetRGBr1,g1,b1,3

GetRGBr2,g2,b2,2

y=int_i/3

Ify

r1=r2

b1=b2

g1=g2

ElseIfy<=CntrAndy>=Cntr-BarSizeThen

rm=255-(((Cntr-y)/BarSize)*255)

CheckRGBrm,0,0

r1=((r1*rm)+(r2*(255-rm)))\255

g1=((g1*rm)+(g2*(255-rm)))\255

b1=((b1*rm)+(b2*(255-rm)))\255

EndIf

CheckRGBr1,g1,b1

Pic1(int_i,int_j)=b1

Pic1(int_i+1,int_j)=g1

Pic1(int_i+2,int_j)=r1

Nextint_j

Nextint_i

Cntr=Cntr+Steps

Case2'过渡

Forint_i=0ToUBound(Pic1,1)-3Step3

Forint_j=0ToUBound(Pic1,2)

GetRGBr1,g1,b1,3

GetRGBr2,g2,b2,2

rm=255-Cntr

CheckRGBrm,0,0

r1=((r1*rm)+(r2*(255-rm)))\255

g1=((g1*rm)+(g2*(255-rm)))\255

b1=((b1*rm)+(b2*(255-rm)))\255

CheckRGBr1,g1,b1

Pic1(int_i,int_j)=b1

Pic1(int_i+1,int_j)=g1

Pic1(int_i+2,int_j)=r1

Nextint_j

Nextint_i

Cntr=Cntr+Steps

Case3'透明圆型擦除

DimpxCenterWidthAsLong,pxCenterHeight

pxCenterWidth=pxWidth\2

pxCenterHeight=pxHeight\2

Forint_i=0ToUBound(Pic1,1)-3Step3

Forint_j=0ToUBound(Pic1,2)

GetRGBr1,g1,b1,3

GetRGBr2,g2,b2,2

y=int_i\3

rm=Sqr((pxCenterWidth-y)*(pxCenterWidth-y)+(pxCenterHeight-int_j)*(pxCenterHeight-int_j))

Ifrm>CntrThen

rm=255

ElseIfrm

rm=0

Else

rm=255-(((Cntr-rm)/BarSize)*255)

EndIf

CheckRGBrm,0,0

r1=((r1*rm)+(r2*(255-rm)))\255

g1=((g1*rm)+(g2*(255-rm)))\255

b1=((b1*rm)+(b2*(255-rm)))\255

CheckRGBr1,g1,b1

Pic1(int_i,int_j)=b1

Pic1(int_i+1,int_j)=g1

Pic1(int_i+2,int_j)=r1

Nextint_j

Nextint_i

Cntr=Cntr+20

EndSelect

'刷新图片

DestPic.Refresh

'刷新时间

mlngTimer=GetTickCount()'复位时间变量

EndIf

DoEvents

Loop

mblnRunning=False

EndIf

UB=UBound(Pic1,1)+1

UB2=UBound(Pic1,2)+1

CopyMemoryPic1(0,0),Pic2(0,0),UB*UB2

CopyMemoryPic2(0,0),Pic3(0,0),UB*UB2

CopyMemoryPic3(0,0),Pic1(0,0),UB*UB2

CopyMemoryByValVarPtrArray(Pic1),0&,4

CopyMemoryByValVarPtrArray(Pic2),0&,4

CopyMemoryByValVarPtrArray(Pic3),0&,4

Ended=True

EndSub

6)程序问题分析

1.图片的进入速度控制不住,有时候图片变化很快,有时候很慢,不好控制。

可以再加入程序,使其控制图片的进出速度。

2.由于以原有的程序进行了大部分的改动,但所学知识有限,模块中的程序无法全部看懂,希望在以后自学过程中搞懂它。

7)总结

通过这次设计,我对VB的运用更加灵活,对知识的掌握更加牢固。

在程序设计的过程中,遇到了一些问题,通过查阅资料和借助网络,解决了一部分问题,但仍有一部分还无法解决。

我还需继续努力,继续学习VB,充实自己。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1