2024年7月3日发(作者:)
PictureBox控件应用方案
知识讲解
1.功能
PictureBox控件提供了更多的功能和绘图的方法。可以利用PictureBox控件提供的方法在其上面绘制图形,还可以
把PictureBox控件作为容器,将其他控件放在其中,从而实现分组的效果。
2.属性
PictureBox控件的常用属性如表1所示。
表1 PictureBox控件的属性
编号
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
属性
Appearance
BackColor
ForeColor
DataChanged
DataField
DataFormat
DataMember
DragIcon
DragMode
Enabled
Font
FontBold
FontItalic
FontStrikethru
FontUnderline
FontName
FontSize
Height、Width
HelpContextID
描述
返回或设置MDIForm或Form对象上的控件在设计时的绘图风
格。在运行时是只读的。
返回或设置对象的背景颜色
返回或设置在对象里显示图片和文本的前景颜色
返回或设置一个值,它指出被绑定的控件中的数据已被某进程
改变,这个进程不是从当前记录中检索数据的进程。该在设计
时不可用
返回或设置数据使用者将被绑定到的字段名
设置或返回StdDataFormat对象,一个绑定对象将附加到它。在
设计时或运行时都可读写
从数据供应程序提供的几个数据成员中返回或设置一个特定的
数据成员
返回或设置图标,它将在拖放操作中作为指针显示
回或设置一个值,确定在拖放操作中所用的是手动还是自动拖
动方式
返回或设置一个值,该值用来确定一个窗体或控件是否能够对
用户产生的事件作出反应
返回一个Font对象
按Bold格式设置字体样式
按Italic格式设置返回或设置字体样式
按Strikethru格式返回或设置字体样式
按Underline格式返回或设置字体样式
返回或设置在控件中或在运行时画图或打印操作中,显示文本
所用的字体
返回或设置在控件中或在运行时画图或打印操作中,显示文本
所用的字体的大小
返回或设置对象的维数、或DataGrid控件Columns 对象的宽度
为一个对象返回或设置一个相关联上下文的编号。它被用来为
应用程序提供上下文有关的帮助
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
hWnd
Index
Left
Top
MouseIcon
MousePointer
Name
OLEDropMode
Parent
RightToLeft
ScaleHeight
ScaleWidth
ScaleLeft
ScaleTop
ScaleMode
TabIndex
TabStop
返回窗体或控件的句柄。
返回或设置唯一标识控件数组中某一控件的数。只有当控件是
控件数组的一部分时,才可用该属性
返回或设置对象内部的左边与它的容器的左边之间的距离
返回或设置对象的内顶部和它的容器的顶边之间的距离
返回或设置自定义的鼠标图标
返回或设置一个值,该值指示在运行时当鼠标移动到对象的一
个特定部分时,被显示的鼠标指针的类型
返回在代码中用于标识控件、或数据访问对象的名字。在运行
时是只读的
返回或设置目标部件如何处理放操作
返回包含控件、或其它对象或者集合的窗体、对象、或集合
返回布尔值,它指示双向系统上的文本显示方向和控件可见的
外观
当使用图形方法或调整控件位置时,返回或设置对象内部的垂
直(ScaleHeight)度量单位
当使用图形方法或调整控件位置时,返回或设置对象内部的水
平(ScaleWidth)度量单位
当使用图形方法或调整控件位置时,返回或设置一个对象左边
(ScaleLeft)的坐标
当使用图形方法或调整控件位置时,返回或设置一个对象上边
垂直(ScaleTop)的坐标
当使用图形方法或调整控件位置时,返回或设置一个值,该值
指示对象坐标的度量单位
返回或设置父窗体中大部分对象的〈Tab〉键次序
返回或设置一个值,该值用来指示是否能够使用〈Tab〉键来将
焦点从一个对象移动到另一个对象
返回或设置一个表达式用来存储程序中需要的额外数据。与其
它属性不同,Tag属性值不被VB使用;可以用该属性来标识对
象
返回或设置一个工具提示
返回或设置一指示对象为可见或隐藏的值
37
38
39
40
Tag
ToolTipText
Visible
返回或设置一个与对象关联的上下文编号。用以为应用程序提
WhatsThisHelpID
供使用Windows 95 Help中的“这是什么”弹出式窗口的上下
文敏感的Help
Align
AutoRedraw
AutoSize
BorderStyle
返回或设置一个值,确定对象是否可在窗体上以任意大小、在
任意位置上显示,或是显示在窗体的顶端、底端、左边或右边,
而且自动改变大小以适合窗体的宽度
返回或设置从图形方法到持久图形的输出
返回或设置一个值,以决定控件是否自动改变大小以显示其全
部内容
返回或设置对象的边框样式。对Form对象和Textbox控件在运
行时是只读的
返回或设置一个值,决定Paint事件中的图形方法是重绘整个对
象,还是只绘刚刚露出的区域。它还决定MicrosoftWindows运
行环境是否创建一个不包括该对象的非图形控件的剪裁区。在
运行时为只读
41
42
43
44
45
ClipControls
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
Container
CurrentX
CurrentY
DataSource
DrawStyle
DrawWidth
FillColor
FillStyle
FontTransparent
hDC
HasDC
Image
IMEMode
LinkItem
LinkMode
LinkTimeout
LinkTopic
返回或设置Form上控件的容器。在设计时不能使用
返回或设置下一次打印或绘图方法的水平(CurrentX)坐标。设计
时不可用
返回或设置下一次打印或绘图方法的垂直(CurrentY)坐标。设计
时不可用
返回或设置一个数据源,通过该数据源,数据使用者被绑定到
一个数据库
返回或设置一个值,以决定图形方法输出的线型的样式
返回或设置图形方法输出的线宽
返回或设置用于填充形状的颜色:FillColor也可以用来填充由
Circle和Line图形方法生成的圆和方框
返回或设置用来填充Shape控件、以及由Circle和Line图形方
法生成的圆和方框的模式
返回或设置一个值,该值用来决定PictureBox控件上的背景文
本和图形被显示在字符周围的空区
返回一个句柄,该句柄是由Microsoft Windows运行环境提供给
一个对象的设备描述体
返回或设置一个值,以决定唯一显示上下文(或hDC)是否被
分配给控件
返回持久图形的句柄,该句柄由Microsoft Windows运行环境提
供
该属性返回或者设置的数值用来确定被选定的对象的IME
(Input Method Editor,输入方法编辑器)状态
DDE与另一个应用程序会话时,返回或设置传给接收端的数据
返回或设置用于DDE会话的链接类型并同时激活下面的连接:
允许Visual Basic窗体上的接收端控件启动会话,它由控件的
LinkTopic和LinkItem属性确定。
返回或设置等待DDE响应消息的时间
返回或设置发送端应用程序和主题(使用于该应用程序中的基
本数据的分组)。为了指定完整的数据链,应当与LinkItem属
性一起使用LinkTopic
设置一个值,当窗体上活动对象显示一个或多个工具栏时,决
定是否显示一个可以对齐的控件。运行时无效
返回或设置是由部件还是由程序员来处理OLE拖放操作
返回或设置控件中要显示的图片。对于OLE容器控件,在设计
时不可用在运行时为只读
63
64
65
Negotiate
OLEDragMode
Picture
下面对PictrueBox控件比较重要的属性进行详细介绍。
(1)AutoSize属性
AutoSize属性用于返回或设置一个值,以决定PictrueBox控件是否自动改变大小以显示其全部内容。
语法:
ze [= boolean]
图1所示演示的是PictureBox控件的AutoSize属性。当AutoSize属性设置为True时,PictureBox控件的大小
随图片的大小改变;当AutoSize属性设置为False时,PictureBox控件不随图片大小改变。
图1 AutoSize属性演示
(2)Picture属性
Picture属性是PictureBox控件最重要的属性之一。在PictureBox控件中显示图片是由Picture属性决定的,有
两种方法可以实现图片的添加。
在设计时加载
在“属性”窗口中找到Picture属性,单击其右边的按钮,打开文件对话框,选择要添加的图片。
在运行时加载
在运行时可以通过LoadPicture函数来设置Picture属性,也可以将其他控件的Picture值赋给PictureBox控件的
Picture属性。
语法:
e [= picture]
object:对象表达式。
picture:字符串表达式,指定一个包含图片的文件,可以设置为bitmap、icon、metafile、GIF、JPEG型的图片。
利用下面的代码向PictureBox控件中添加图片:
e = LoadPicture("D:图片素材明日企标.jpg ")
应用一:保存Picture控件中的图形
要保存Picture控件中的图形,可以使用SavePicture语句,其可以从对象或控件(如果有一个与其相关)的Picture
或Image属性中将图形保存到文件中。语法如下:
SavePicture picture, stringexpression
参数说明:
picture:产生图形文件的PictureBox控件或Image控件。
stringexpression:要保存的图形文件名。
无论在设计时还是运行时图形从文件加载到对象的Picture属性,而且它是位图、图标、元文件或增强元文件,
则图形将以原始文件同样的格式保存。如果它是GIF或JPEG文件,则将保存为位图文件。代码如下:
SavePicture , "c:"
应用二:Picture控件设置图形或清除图形
PictureBox控件可以显示来自位图、图标或者元文件,以及来自增强的元文件、JPEG或GIF文件的图形。下
面是为Picture控件设置图形或清除图形的几个小技巧。
1、使用代码为控件设置图形。如果已知路径和图片名,可使用如下代码:
e = LoadPicture("c:")
如果在应用程序目录下(非根目录),且知道图片名,可使用如下代码:
e = LoadPicture( & "")
如果在应用程序目录下(根目录),且知道图片名,可使用如下代码:
e = LoadPicture( & "")
如果不知道目录和图片名,需要用户选择,则须和CommonDialog控件配合,代码如下:
= "*.bmp|*.jpg|*.gif"
en
e = LoadPicture(me)
2、清除PictureBox控件的图形。
下面使用代码清除图片:
e = LoadPicture("")
也可以手工清除,把鼠标移到Picture控件的Picture属性值输入处,按键盘上的“Del”键。
应用三:PictureBox显示动态运行进度
要实现利用PictureBox控件显示动态运行进度,可通过利用PictureBox控件绘制并填充矩形来实现。随着执行
进度的不断变化,绘制矩形的宽度也跟着不断的变化,这时用指定的颜色填充由Line函数绘制成的矩形。
最终效果如图2所示。
图2 利用PictureBox控件实现进度条功能
程序代码如下:
★★★★★ Form1 ★★★★★★
'单击开始按钮,用PictureBox显示动态运行进度
Private Sub Command1_Click() '开始执行
Dim i As Integer
Dim t As Long
Dim per As String
Dim cx, cy As Single
For i = 0 To idth
de = vbCopyPen
(0, 0)-(idth, eight), QBColor(7), BF
per = Format(i / idth, "0.00%")
cx = (idth - dth(per)) / 2
cy = (eight - ight(per)) / 2
tX = cx
tY = cy
per
de = vbXorPen
(0, 0)-(i, eight), QBColor(11), BF
For t = 0 To 5000
DoEvents
Next t
Next i
MsgBox "完成!", , "明日图书"
End Sub
Private Sub Command2_Click() '退出
End
End Sub
'窗体启动并进行初始化
Private Sub Form_Load()
lor = vbBlack
yle = vbSolid
ze = 14
End Sub
应用四:Picture控件在警区分布图中的应用
Picture控件可以显示来自位图、图标以及来自增强的元文件、JPEG或GIF文件的图形。如果控件不足以显示
整幅图像,则裁剪图像以适应控件的大小。
PictureBox控件还可以作为容器,将其他控件放在它里面使用。
Picture控件还是一个数据绑定控件,在开发程序过程中,可以通过数据绑定的方法显示数据库中的图片。另外,
Picture控件的LoadPicture方法也可以显示数据库中的图片。
在下面的警区分布图中,灵活运用了Picture控件的以上特点,实现了查看数据库中各警区分布图的功能,其
中使用Shape控件标记各警区的位置,如图3所示。
图3 Picture控件在长春市警区分布图中的应用
设计思路如下:
使用Picture控件的LoadPicture方法浏览数据中的区域图。根据不同的区域和数据库中存储的各区域内警区的
位置,动态加载并显示各警区标记。警区标记由Shape控件完成,动态加载警区标记主要通过Load方法动态加载
Shape控件实现。其中,位置由数据库中存储的警区的位置和所在区域决定。
程序完整代码如下:
Dim Rs As New set
Dim Cn As New tion
Dim i As Integer
'启动窗体连接数据库并进行初始化
Private Sub Form_Load()
"DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & & ""
"select 所属区域 from 警区表 group by 所属区域", Cn, adOpenKeyset, adLockOptimistic
If Count > 0 Then
Do While = False
m ("所属区域")
xt
Loop
End If
i = 1
End Sub
'单击ComboBox控件1的项目并初始化
Private Sub Combo1_Click()
"select * from 警区表 where 名称='" + + "'", Cn, adOpenKeyset, adLockOptimistic
If Count > 0 Then
= ("地址")
= ("电话")
= ("位置1") & "," & ("位置2")
For i = 1 To - 1
If Shape1(i).Left = ("位置1") And Shape1(i).Top = ("位置2") And Shape1(i).Visible
= True Then
d = True
Exit For
Else
Shape1(i).BackColor = &HFF&
d = False
End If
Next i
End If
End Sub
'单击ComboBox控件2的项目并初始化
Private Sub Combo2_Click()
n = & "警务区"
"select * from 警区表 where 所属区域='" + + "' order by 编号", Cn, adOpenKeyset,
adLockOptimistic
If Count > 0 Then
rst
Do While = False
m ("名称")
xt
Loop
End If
If > 1 Then
For Index = 1 To - 1
Shape1(Index).Visible = False
Next Index
End If
"select 所属区域,图,位置1,位置2 from 警区表 where 所属区域='" + + "' group by 所
属区域,图,位置1,位置2 ", Cn, adOpenKeyset, adLockOptimistic
If Count > 0 Then
e = LoadPicture( & ("图"))
Do While = False
i = + 1
Load Shape1(i)
Shape1(i).Left = ("位置1")
Shape1(i).Top = ("位置2")
Shape1(i).Visible = True
xt
Loop
End If
End Sub
'
Private Sub Timer1_Timer()
If Shape1(i).BackColor = &HFF& Then
Shape1(i).BackColor = &HFF00&
Else
Shape1(i).BackColor = &HFF&
End If
End Sub
'单击退出按钮,退出程序
Private Sub Command1_Click()
If > 1 Then
For i = 1 To - 1
Shape1(i).Visible = False
Next i
End If
Unload Me
End Sub
应用五:利用PictureBox控件浏览大幅图片
一些大幅BMP图片在有限的区域中很难全部显示,运用水平滚动轴控件HScrollBar和垂直滚动轴控件VScrollBar
并配合PictureBox控件就可以实现浏览大幅图片。
运行程序,首先选择要浏览的BMP图片所在的路径,窗体右侧的列表框中将显示此路径下的所有BMP文件,如
图4所示。在图片文件列表中用鼠标双击要浏览的BMP文件的名称即可进入“浏览大幅BMP图片-浏览”窗口,在该
窗口中拖动滚动条即可看到BMP图片的其他部分;单击“上一张”或“下一张”按钮可以浏览此路径下的其他的BMP
图片,效果如图5所示。
图4 运行结果
若文件列表中的文件很多,可在“图片检索”文本框中输入图片文件名称的关键字,系统将自动执行模糊查询,
并将查询结果显示在图片文件列表中。如图5所示。
图5 浏览大幅BMP图片
完整主要程序代码:
(1)Form1窗体完整代码:
'启动窗体并进行初始化
Private Sub Form_Load()
=
=
n = "*.bmp" '设置文件列表框显示文件格式
End Sub
Private Sub Dir1_Change() '选择文件夹
=
If unt > 0 Then
n = "共" & unt & "个文件" '获取bmp图片个数
n =
Else
e = LoadPicture("")
n = ""
End If
End Sub
Private Sub Drive1_Change() '选择驱动器
=
End Sub
'单击图片名称,在窗体2中显示图片
Private Sub File1_DblClick()
Load form2
d = False
n = n & " " & "第" & dex + 1 & "个文件"
Dim sfilename As String
Dim l As Long
Dim dwidth As Long, dheight As Long
If unt <= 0 Then '文件列表框如果没有图片,取消操作
Exit Sub
End If
If Right(, 1) <> "" Then '判断选定文件
sfilename = & "" & me
Else
sfilename = & me
End If
e = LoadPicture("")
e = LoadPicture(sfilename) '导入选定图片显示
If < idth Then '判断是否给图片加水平滚动条
= (idth - ) 2
e = False
Else
= 0
e = True
= 0
On Error Resume Next
= - idth
hange = 20
hange = 10
End If
If < Then '判断是否给图片加垂直滚动条
= (eight - ) 2
e = True
Else
= 0
e = True
= 0
= - eight
hange = 20
hange = 10
End If
End Sub
Private Sub text1_Change() '检索图片
n =
n = "文件数目:" & Str(unt) & "个文件"
End Sub
'退出程序
Private Sub Command1_Click()
End
End Sub
(2)form2窗体完整程序代码
Private Sub HScpic_Change() '托动水平滚动条
= -
End Sub
Private Sub VScpic_Change() '托动垂直滚动条
= -
End Sub
'查看当前路径的上一张图片
Private Sub Command1_Click()
If dex > 0 Then
On Error Resume Next
dex = dex - 1
n = n & " " & "第" & dex + 1 & "个文件"
Dim sfilename As String
Dim dwidth As Long, dheight As Long
If Right(, 1) <> "" Then '判断文件路径
sfilename = & "" & me
Else
sfilename = & me
End If
e = LoadPicture("")
On Error Resume Next
e = LoadPicture(sfilename) '导入图片
If < idth Then '设置水平滚动条
= (idth - ) 2
e = False
Else
= 0
e = True
= 0
On Error Resume Next
= - idth
hange = 20
hange = 10
End If
If < Then '设置垂直滚动条
= (eight - ) 2
e = True
Else
= 0
e = True
= 0
= - eight
hange = 20
hange = 10
End If
Else
Exit Sub
End If
End Sub
'查看当前路径的下一张图片
Private Sub Command2_Click()
If unt > dex + 1 Then
On Error Resume Next
dex = dex + 1
n = n & " " & "第" & dex + 1 & "个文件"
Dim sfilename As String
Dim dwidth As Long, dheight As Long
If Right(, 1) <> "" Then '判断图片路径
sfilename = & "" & me
Else
sfilename = & me
End If
e = LoadPicture("")
On Error Resume Next
e = LoadPicture(sfilename)
If < idth Then '设置水平滚动条
= (idth - ) 2
e = False
Else
= 0
e = True
= 0
On Error Resume Next
= - idth
hange = 20
hange = 10
End If
If < Then '设置垂直滚动条
= (eight - ) 2
e = True
Else
= 0
e = True
= 0
= - eight
hange = 20
hange = 10
End If
Else
Exit Sub
End If
End Sub
Private Sub Command3_Click() '返回主窗体
d = True
Unload Me
End Sub
'退出窗体
Private Sub Form_Unload(Cancel As Integer)
d = True
End Sub
应用六:如何获得PictureBox控件中的颜色
利用PictureBox控件的Point方法,可以获得PictureBox中任意一点的颜色。Point方法可以返回一个Long类
型的值,它即为表示颜色的RGB值。为了这个值能够更有效的使用,可以通过下面的公式获得颜色的R、G、B分
量:
red = rgb Mod &H100
green = (rgb &H100) Mod &H100
blue = (rgb &H10000) Mod &H100
最终效果如图6所示。
图6 获得PictureBox控件中的颜色值
程序代码如下:
★★★★★ Form1 ★★★★★★
'获得PictureBox控件中的颜色
Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim color As Long
Dim r As String, g As String, b As String
color = (X, Y)
r = CStr(color Mod &H100)
g = CStr((color &H100) Mod &H100)
b = CStr((color &H10000) Mod &H100)
= "R " & r & ", G " & g & ", B " & b
lor = color
End Sub
应用七:用PictureBox控件实现马赛克效果
在电视中经常可以看到马赛克效果。本实例介绍如何对图片进行马赛克效果处理。单击“网格”按钮,窗体中
的图片将被一些网格所分割,呈现马赛克效果,如图所示。通过PictureBox控件的PaintPicture属性来实现在窗体
的Picture控件中显示图片马赛克的效果。
最终效果如图7所示。
图7 图片马赛克效果
程序代码如下:
★★★★★ Form1 ★★★★★★
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Dim stepheight, i, j, countx, county As Long
'窗体启动加载图片并初始化
Private Sub Form_Load()
e = LoadPicture( & "")
=
=
countx = eight / 5
county = idth / 5
= 20
= ( - ) / 2
End Sub
'单击网格按钮实现马赛克效果
Private Sub Command3_Click() '网格
e = False
Set e = Nothing
For i = 0 To county - 1 Step 4
icture e, i * 5, 0, , , i * 5, 0, 5, , vbSrcCopy
DoEvents
Sleep (10)
Next i
For i = 0 To countx - 1 Step 3
icture e, 0, i * 5, , , 0, i * 5, , _
5, vbSrcCopy
DoEvents
Sleep (10)
Next i
For i = 0 To county - 1 Step 2
icture e, i * 5, 0, , , i * 5, 0, 5, , vbSrcCopy
DoEvents
Sleep (10)
Next i
For i = 0 To countx - 1 Step 1
icture e, 0, i * 5, , , 0, i * 5, , _
5, vbSrcCopy
DoEvents
Sleep (10)
Next i
End Sub
'退出程序
Private Sub Command4_Click()
End
End Sub
应用八:翻转图片效果
实例说明
在多媒体编程中经常会用到图像的翻转,本实例实现了图像的垂直翻转和水平翻转的效果。单击“垂直翻转”
按钮,窗体中的图片将进行垂直翻转;单击“水平翻转”按钮,窗体中的图片将进行水平翻转,如图8所示。
图8 翻转图片效果
思路与技术
通过PictureBox控件的PaintPicture属性来实现在窗体的Picture控件中进行图片翻转的效果。
PictureBox控件的PaintPicture方法用于在PictureBox上绘制图形文件,其语法结构如下:
icture picture, x1, y1, width1, height1, x2, y2, width2, height2, opcode
参数说明:
object 可选的。一个对象表达式。
picture 必需的。用于设置要绘制到object上的图形源。
x1, y1 必需的。均为单精度值,指定在object上绘制picture的目标坐标(x轴和y轴)。object
的ScaleMode属性决定使用的度量单位。
width1 可选的。单精度值,指示picture的目标宽度。object的ScaleMode属性决定使用的度量
单位。如果目标宽度比源宽度(width2)大或小,将适当地拉伸或缩小picture。如果该参数省略,则使用源宽度。
height1 可选的。单精度值,指示picture的目标高度。object的ScaleMode属性决定使用的度量
单位。如果目标高度比源高度(height2)大或小,将适当地拉伸或缩小picture。如果该参数省略,则使用源高度。
x2, y2 可选的。均为单精度值,指示picture内剪贴区的坐标(x轴和y轴)。object的ScaleMode
属性决定使用的度量单位。如果该参数省略,则默认为0。
width2 可选的。单精度值,指示picture内剪贴区的源宽度。object的ScaleMode属性决定使用
的度量单位。如果该参数省略,则使用整个源宽度。
height2 可选的。单精度值,指示picture内剪贴区的源高度。object的ScaleMode属性决定使用
的度量单位。如果该参数省略,则使用整个源高度。
opcode 可选的。是长型值或仅由位图使用的代码。它用来定义在将图片绘制到object上时对图
片执行的位操作(例如vbMergeCopy或vbSrcAnd操作符)。
注意:
opcode用于将按位操作传递到位图。当传递其他图像类型时将一个值赋给该参数会造成“无效过程调用或参数”错
误,这是设计的原因。要避免这个错误,对于除位图外的图像,将Opcode参数置为空。
开发步骤
(1)新建一个标准工程,创建一个新窗体。
(2)在窗体上添加一个PictureBox控件,并设置其Picture属性。
(3)在窗体上添加一个CommandButton控件数组(Command1(0)~Command1(1)),设置其Caption属性分
别为“垂直翻转”和“水平翻转”;再添加一个CommandButton控件,设置其Caption属性为“退出”。
Form1窗体中控件部分属性设置如表2所示。
表2 Form1窗体中控件部分属性设置
控件名
CommandButton
属性
Name
Caption
Command1(0)
值
水平翻转
CommandButton
CommandButton
PictureBox
Name
Caption
Name
Caption
Name
Command1(1)
垂直翻转
Command2
退出
Picture1
(4)为Form1窗体添加如下代码。
Option Explicit
Dim bHort As Boolean
Dim bVert As Boolean
'实现图片的水平和垂直翻转
Private Sub Command1_Click(Index As Integer)
Dim pic As StdPicture
Set pic = e
Select Case Index
Case 0
bHort = Not bHort
Case 1
bVert = Not bVert
End Select
If bHort And bVert Then
icture pic, , , _
* -1, * -1
ElseIf bHort And Not bVert Then
icture pic, , 0, _
* -1,
ElseIf Not bHort And bVert Then
icture pic, 0, , _
, * -1
Else
icture pic, 0, 0
End If
End Sub
'退出程序
Private Sub Command2_Click()
End
End Sub
'窗体启动并初始化
Private Sub Form_Load()
= ( - ) / 2
= ( - ) / 2
End Sub
应用九:图像的锐化处理
实例说明
图像的锐化在编写图像处理方面的软件中应用得非常广泛。本实例演示的是图像锐化的效果。运行程序,单击
“开始锐化”按钮,系统将对原始图片进行锐化,并将锐化后的图像显示在“锐化后效果图”图片框中。效果如图
1所示。从图中可以看出,锐化后的图像棱角非常地清晰。
图9 图像的锐化处理
思路与技术
利用PictureBox控件的Point方法与PSet方法来实现图像锐化的效果。
PictureBox控件的Point方法用于返回PictureBox控件上指定磅的颜色,其语法格式如下:
(x, y)
参数说明:
object 可选的,一个对象表达式。
(x, y) 必需的。均为单精度值,指示Form或PictureBox的ScaleMode属性中该点的水
平(x轴)和垂直(y轴)坐标。使用时必须用括号将这些值括起来。
利用PictureBox控件的PSet方法可以将对象上的点设置为指定颜色,PSet方法的语法格式如下:
[Step] (x, y), [color]
参数说明:
object 可选的,对象表达式。
Step 可选的。关键字,指定相对于由CurrentX和CurrentY属性提供的当前图形位置
(x, y) 必需的。数据类型为Single(单精度浮点数),表示被设置点的水平(x轴)和
color 可选的。数据类型为Long(长整型数),用于为该点指定RGB颜色。如果它被
的坐标。
垂直(y轴)坐标。
省略,则使用当前的ForeColor属性值。可以用RGB函数或QBColor函数指定颜色。
开发步骤
(1)新建一个标准工程,创建一个新窗体。
(2)在窗体中添加两个Frame控件,分别设置其Caption属性为“锐化前效果图”和“锐化后效果图”。
(3)分别在Frame1和Frame2控件中各添加一个PictureBox控件。
(4)在窗体上添加一个CommandButton控件,设置其Caption属性为“开始锐化…”。
From1窗体中控件部分属性设置如表3所示。
表3 From1窗体中控件部分属性设置
控件名
CommandButton
Frame
Frame
属性
Name
Caption
Name
Caption
Name
Command1
开始锐化…
Frame1
锐化前效果图
Frame2
值
Caption
PictureBox
PictureBox
Name
Name
锐化后效果图
Picture1
Picture2
(5)为From1窗体添加如下代码。
'单击开始锐化对图片进行锐化效果处理
Private Sub Command1_Click()
Dim r2, g2, b2 As Integer: Dim r1, g1, b1 As Integer
Dim c1 As Long: Dim c2 As Long: Dim x0 As Integer: Dim y0 As Integer
ointer = 11
d = False
For x0 = 1 To 180
For y0 = 1 To - 2
c1 = (x0, y0)
r1 = (c1 And &HFF)
g1 = (c1 And 62580) / 256
b1 = (c1 And &HFF0000) / 65536
'获得Picture1中指定点(x0,y0)的R、G、B分量值
c2 = (x0 - 1, y0 - 1)
r2 = (c2 And &HFF)
g2 = (c2 And 62580) / 256
b2 = (c2 And &HFF0000) / 65536
'获得Picture1中与(x0,y0)点相邻的点的R、G、B分量值
r1 = r1 + (r1 - r2) 2
g1 = g1 + (g1 - g2) 2
b1 = b1 + (b1 - b2) 2
'计算锐化后的R、G、B分量值
If r1 > 255 Then r1 = 255
If r1 < 0 Then r1 = 0
If b1 > 255 Then b1 = 255
If b1 < 0 Then b1 = 0
If g1 > 255 Then g1 = 255
If g1 < 0 Then g1 = 0
(x0, y0), RGB(r1, g1, b1)
'画出锐化后的(x0,y0)
Next y0
Next x0
ointer = 0
d = True
End Sub
'窗体启动并初始化
Private Sub Form_Load()
e = LoadPicture( + "")
= ( - ) / 2
= ( - ) / 2
End Sub
应用十:将位图转换为GIF图标
实例说明
在应用位图时,将图片格式转换为GIF格式可以减小图片文件的大小。运行程序,首先设置图片转换前的路径
及转换格式后图片所要存放的路径,窗体中则显示了要进行转换格式的图片。单击“转换”按钮即可将位图转换为
GIF格式。效果如图10所示。
图10 将位图转换为GIF图标
思路与技术
使用PictureBox控件的Scale方法定义图像显示的坐标,通过PictureBox控件的PSet方法和Point方法逐点获
取和设置图像上的点来实现将位图转换为GIF图标的功能。
开发步骤
(1)新建一个标准工程,创建一个新窗体。
(2)在窗体上添加两个Label控件,设置其Caption属性分别为“转换前路径”和“转换后路径”。
(3)在窗体上添加两个TextBox控件、一个Image控件、两个PictureBox控件和一个CommonDialog
控件,设置CommonDialog控件的“名称”属性为Common1;添加4个CommandButton控件,设置其Caption
属性分别为“转换”、“退出”和“<<”,设置其“名称”属性分别为Cmd_OK、Cmd_Cancel、Cmd_Select1和Cmd_Select2。
Form1窗体中控件部分属性设置如表4所示。
表4 Form1窗体中控件部分属性设置
控件名
CommandButton
CommandButton
CommandButton
CommandButton
CommonDialog
Image
Label
Label
属性
Name
Caption
Name
Caption
Name
Caption
Name
Caption
Name
Name
Name
Caption
Name
Caption
Cma_Cancel
转换
Cma_OK
确定
Cm_select1
<<
Cma_select2
>>
Common1
Image1
Label2
转换前路径
Label3
转换所路径
值
PictureBox
PictureBox
TextBox
TextBox
Name
Name
Name
Name
Picture1
Picture2
Text1
Text2
(4)为Form1窗体添加如下代码。
Dim res As Integer
'点击转换按钮,将位图转换为GIF图标
Private Sub Cmd_OK_Click()
If = "" Or = "" Then
MsgBox "请选择转换前和转换后的文件路径!!", 48, "提示信息"
Else
ointer = 11
Cmd_d = False
Dim i, j, w, h, w1, h1, k As Integer
w =
h =
w1 = w / 15
h1 = h / 15
= w
= h
(0, 0)-(w1, h1)
(0, 0)-(w1, h1)
For i = 1 To w1
For j = 1 To h1
(i, j), (i, j)
Next j
Next i
e =
SavePicture , & "." & Mid("*.GIF", 3, 5)
MsgBox "格式转换成功完成!!", 64, "提示信息"
Cmd_d = True
ointer = 0
End If
End Sub
'设置转换前路径
Private Sub Cmd_select1_Click()
On Error GoTo x
= "所有文件(*.*)|*.*"
en
= me
e = LoadPicture()
e = e
Exit Sub
x:
MsgBox "无效图片!", 64, "提示信息"
End Sub
'设置转换后的路径
Private Sub Cmd_select2_Click()
= "所有文件(*.*)|*.*"
ve
= me
End Sub
Private Sub Command1_Click()
e = LoadPicture()
e = e
End Sub
发布者:admin,转转请注明出处:http://www.yc00.com/news/1719961288a2759437.html
评论列表(0条)