武科大VB考试报告.docx
- 文档编号:6832018
- 上传时间:2023-01-11
- 格式:DOCX
- 页数:16
- 大小:946.29KB
武科大VB考试报告.docx
《武科大VB考试报告.docx》由会员分享,可在线阅读,更多相关《武科大VB考试报告.docx(16页珍藏版)》请在冰豆网上搜索。
武科大VB考试报告
《多媒体软件设计技术》
考试报告书
学院
班级
学号
姓名
指导老师
*所选考试题目:
设计两幅图像的合成或叠加效果。
如:
单人照片合成双人照片或者在背景图片上叠加另一幅小图片。
一、程序功能简介:
能加载两幅图片分别称为picture和background,并且可以显示其路径。
实现两个图片的合成和两个图片的叠加,并且可以手动设置叠加比例,来观察叠加的效果!
同时也可以手动设置过度的区域宽度,观察合成的效果!
另外可以实现退出和清除功能!
二、程序详细设计:
(1)设计界面:
(2)运行界面:
图片一、未读取图片
图片二、读取图片
图片四、过度宽度是200时的合成图片
图片三、过度宽度是100时的合成图片
图五、叠加比例为50时的叠加图片
图六、叠加比例为90时的叠加图片
(3)属性设置
控件名称
属性名称
属性值
窗体
Caption
图像合成和叠加
Startupposition
2-屏幕中心
backcolor
&H8000000F&
图片框控件1
图片框控件2
图片框控件3
AutoRedraw
True
ScaleMode
3-pixel
BorderStyle
0-none
BackColor
&H00FFFFFF&
标签控件1
AutoSize
True
Caption
所加图片
BackStyle
1-Opaque
BordStyle
0-none
标签控件2
AutoSize
True
Caption
背景图片
BackStyle
1-Opaque
BordStyle
0-none
标签控件3
AutoSize
True
Caption
过度区宽度
BackStyle
1-Opaque
BordStyle
0-none
标签控件4
AutoSize
True
Caption
叠加比列%
BackStyle
1-Opaque
BordStyle
0-none
命令按钮1
Name
Command1
Caption
读取图片
命令按钮2
Name
Command2
Caption
图片合成
命令按钮3
Name
Command3
Caption
图片叠加
命令按钮4
Name
Clear
Caption
清除
命令按钮5
Name
quit
Caption
退出
文本框控件1
Text
App.Path&"\background.jpg"
文本框控件2
Text
App.Path&"\picture.jpg"
文本框控件3
Text
100
文本框控件4
Text
50
(4)相关的代码
a)设置窗体,图片框和文本框控件属性
b)设置命令按钮,标签框属性并调整相对位置
c)装载图片
d)图片互溶
e)图片叠加
f)实现图片互溶和叠加的函数
g)复制图片的函数
h)退出程序代码
i)清除合成或互溶的图片
三、程序设计小结:
本程序编程的难点在于怎样实现两个图片相互溶合和叠加,由于有些方法还不是很熟练,通过在图书馆借阅相关书籍,同时在网络上收索不懂的一些代码,一般都能得到一些解答,在不断的改进自己的程序,才得以实现上述的程序所具备的功能。
开始装载图片时,是使用的固定的C:
\***.后来一放到其他人的电脑上就不能运行,通过查阅书籍改为App.Path&"\****.jpg"的形式才得以解决问题。
程序中实现图片复制的函数GetRGB(SeAsLong,RAsLong,GAsLong,BAsLong)是借鉴书籍上的。
图片的合成和叠加是用的一个函数,当PicDdd=True时为图片叠加,否则为图片的合成。
另外在图片上的选择的时候,有时大小不对,需要通过PS来根据需要改变其尺寸来满足要求。
虽然程序的代码并不是全部是独立写出来的,有的是通过网络,书籍以及同学的指导才逐步弄懂,并经过不断的上机实验和调试,才得以将程序的相关代码完善,最终实现程序预订的功能!
本次给我最大的启示:
软件的学习必需要多在电脑上实验,才能更好的了解所学的知识,才能更好的掌握它!
附:
程序和图
'5个按钮:
Command1,Command2,Command3,Command4,Command5
'3个图片框:
Picture1,Picture2,Picture3
'4个标签框:
Label1,Label2,Label3,Label4
'4个文本框:
Text1,Text2,Text3,Text4
PrivateSubForm_Load()
Me.ScaleMode=3:
Me.Caption="图像合成和叠加"
Me.Move60,60,Screen.Width*0.9,Screen.Height*0.9
Picture1.AutoRedraw=True:
Picture1.ScaleMode=3:
Picture1.BorderStyle=0:
Picture1.BackColor=&HFFFFFF'设置picture1的相关属性
Picture2.AutoRedraw=True:
Picture2.ScaleMode=3:
Picture2.BorderStyle=0:
Picture2.BackColor=&HFFFFFF'设置picture2的相关属性
Picture3.AutoRedraw=True:
Picture3.ScaleMode=3:
Picture3.BorderStyle=0:
Picture3.BackColor=&HFFFFFF'设置picture3的相关属性
Picture1.Font.Size=72:
Picture1.Print"图片"'未装载图片时图片框1上显示的字为“图片”
Picture2.Font.Size=90:
Picture2.ForeColor=255:
Picture2.Print"背景图片"'未装载图片时图片框1上显示的字为“背景图片”
Text1.Text=App.Path&"\background.jpg"'显示图片的路径
Text2.Text=App.Path&"\picture.jpg"'显示背景图片的路径
Text3.Text=100'默认过度区宽度:
像素
Text4.Text=50'默认叠加百分比
EndSub
PrivateSubForm_Resize()
CallSetKJ'调用SetKJ子函数
EndSub
PrivateSubSetKJ()
'调整控件位置,实际已在在控件设计阶段进行
DimS,L,T,H,W
OnErrorResumeNext
Label1.AutoSize=True:
Label1.Caption="所加图片"'设置label1的autosize,caption属性
Label2.AutoSize=True:
Label2.Caption="背景图片"'设置label2的autosize,caption属性
Label3.AutoSize=True:
Label3.Caption="过度区宽度"'设置label3的autosize,caption属性
Label4.AutoSize=True:
Label4.Caption="叠加比列%"'设置label4的autosize,caption属性
S=Label1.Height
L=Me.ScaleWidth-S*5
Label1.MoveS,S:
Text1.MoveS+Label1.Width,Label1.Top,Me.ScaleWidth-S*5,S
Label2.MoveS,S*3:
Text2.MoveS+Label2.Width,Label2.Top,Me.ScaleWidth-S*5,3
Label3.MoveS,S*5.3:
Text3.MoveS+Label3.Width,S*5,S*5,S'调整label的相对位置
Command1.Caption="读取图片":
Command1.MoveText3.Left+Text3.Width+S,Text3.Top,S*6,S*2
Command2.Caption="图片合成":
Command2.MoveCommand1.Left+Command1.Width+S,Text3.Top,S*6,S*2
Command3.Caption="图片叠加":
Command3.MoveCommand2.Left+Command2.Width+S,Text3.Top,S*6,S*2
Command4.Caption="清除":
Command4.MoveCommand3.Left+Command3.Width+S,Text3.Top,S*6,S*2
Command5.Caption="退出":
Command5.MoveCommand4.Left+Command4.Width+S,Text3.Top,S*6,S*2'调整command的相对位置,并且设置相关的属性
Label4.MoveCommand3.Left+Command3.Width+S,S*5.3
Text4.MoveLabel4.Left+Label4.Width,S*5,S*5,S'调整label和text的相对位置
T=S*7.5
W=(Me.ScaleWidth-30)*0.5:
H=(Me.ScaleHeight-T-20)*0.5
Picture1.Move10,T,W,H:
Picture2.MoveW+20,T,W,H
Picture3.Move10,T+H+10,W*2,H'调整picturebox的相对位置
EndSub
PrivateSubCommand1_Click()
'例子图片默认采用系统目录下的两幅桌面图片
OnErrorGoToCuo
Picture1.Picture=LoadPicture(Text1.Text):
Picture2.Picture=LoadPicture(Text2.Text)'用于一次性装载图片
ExitSub
Cuo:
MsgBox"无法打开图片文件:
"&vbCrLf&Text1.Text&vbCrLf&Text2.Text,vbInformation'如果找不到图片则提醒打不开
EndSub
PrivateSubCommand2_Click()
CallPicToPic'图片互溶过渡
EndSub
PrivateSubCommand3_Click()
CallPicToPic(True)'图片叠加
EndSub
PrivateSubPicToPic(OptionalPicDddAsBoolean)
'图片互溶过渡(PicDdd=True时为图片叠加)
DimXAsLong,YAsLong,X1AsLong,Y1AsLong,X2AsLong,Y2AsLong
DimR1AsLong,G1AsLong,B1AsLong,R2AsLong,G2AsLong,B2AsLong
DimWAsLong,HAsLong,SeAsLong,W2AsLong,BiAsSingle
DimBiDddAsSingle'定义相关变量
H=Picture1.ScaleHeight:
W=Picture1.ScaleWidth'自定义坐标系统
Picture3.Cls:
DoEvents
Picture3.PaintPicturePicture1.Image,0,0,W,H,0,0,W,H'用于复制图片
Command1.Enabled=False:
Command2.Enabled=False:
Command3.Enabled=False'当在执行互溶或是叠加的时候command1-command3不可用
DoEvents
W=Val(Text3.Text)'过度区宽度:
像素
IfPicDddOrW>Picture1.ScaleWidthThenW=Picture1.ScaleWidth
X1=Picture1.ScaleWidth-W'左图变化起点
X2=20'右图截取起点
IfPicDddThenX2=0:
BiDdd=Val(Text4.Text)/100'叠加百分比
IfBiDdd>1ThenBiDdd=1
IfBiDdd<0ThenBiDdd=0
X=Picture1.ScaleWidth'自定义坐标系统
W2=Picture2.ScaleWidth-W
Picture3.Width=Picture1.Width+Picture2.Width-W-X2
IfW2>0ThenPicture3.PaintPicturePicture2.Image,X,0,W2,,X2+W,,W2
DoEvents
ForX=X1ToX1+W-1
ForY=Y1ToY1+H-1
IfPicDddThenBi=BiDddElseBi=(X-X1)/W'图片叠加,或过度的比率
Se=Picture1.Point(X,Y):
GetRGBSe,R1,G1,B1'左图颜色
Se=Picture2.Point(X2+X-X1,Y):
GetRGBSe,R2,G2,B2'右图颜色
Se=RGB(R1*(1-Bi)+R2*Bi,G1*(1-Bi)+G2*Bi,B1*(1-Bi)+B2*Bi)
Picture3.PSet(X,Y),Se
Ci=Ci+1
IfCi>4000ThenCi=0:
DoEvents
Next
Next
Command1.Enabled=True:
Command2.Enabled=True:
Command3.Enabled=True'当执行完互溶或是叠加的时候command1-command3可用
EndSub
PrivateSubGetRGB(SeAsLong,RAsLong,GAsLong,BAsLong)'用于复制图片的函数
DimnStrAsString,SAsLong
nStr=Hex(Se):
S=6-Len(nStr)
IfS>0ThennStr=String(S,"0")&nStr
R="&H"&Mid(nStr,5,2)
G="&H"&Mid(nStr,3,2)
B="&H"&Mid(nStr,1,2)
EndSub
PrivateSubquit_Click()'退出程序运行
End
EndSub
PrivateSubclear_Click()'清除叠加的图片
Picture3.Cls
EndSub
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 武科大 VB 考试 报告