在功能强大的图形图像处理软件中,基本上对于文字的操作都具有图片填充的功能,在VB中,借助于一定的API函数,也能实现图片填充文字的特殊效果,以下就是其具体的实现方法:
启动VB,新建一“标准EXE”文件,点击菜单“工程/部件”打开部件列表框,勾选“Microsoft Common Dialog Control 6.0”选项,然后点击“确定”按钮,将通用对话框控件 添加到控件工具箱中,并双击该控件按钮,在窗体上添加一通用对话框控件(CommonDialog1)。
然后在窗体上添加一组合框(Combo1)和四个命令按钮(Command1.Caption=“输入文字”,Command2.Caption=“字体大小”,Command3.Caption=“更改图片”,Command4.Caption=“退出”)。添加一个图片框(Picture1),然后利用图片框控件在Picture1中添加一个图片框(Picture2),并将Picture2的Picture属性设置为自己希望填充文字的图片。并设置窗体的启动位置(StartUpstation为“2-屏幕中心”)。
最后,打开代码输入窗口,输入以下的源代码:
Option Explicit
Private Declare Function BeginPath Lib "gdi32" (ByVal hdc As Long) As Long
Private Declare Function EndPath Lib "gdi32" (ByVal hdc As Long) As Long
Private Declare Function PathToRegion Lib "gdi32" (ByVal hdc As Long) As Long
Private Declare Function SetWindowRgn Lib "user32" (ByVal hWnd As Long, ByVal hrgn As Long, ByVal bRedraw As Boolean) As Long
Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
Dim Outtext As String '定义显示的文字变量
Private Sub TextFill() '将图片框2文字转化为路径,并设置为图片框2的显示区域
Dim hrgn As Long
BeginPath Picture2.hdc
'文字显示位置
Picture2.CurrentX = (Picture1.Width - Picture2.TextWidth(Outtext)) / 2
Picture2.CurrentY = (Picture1.Height - Picture2.TextHeight(Outtext)) / 2
Picture2.Print Outtext
EndPath Picture2.hdc
hrgn = PathToRegion(Picture2.hdc)
SetWindowRgn Picture2.hWnd, hrgn, 1
'设置文字为显示区域
DeleteObject hrgn
Picture1.Cls
'显示当前文字的字体和大小信息
Picture1.CurrentX = 0
Picture1.CurrentY = 0
Picture1.Print "当前字体为:" && Combo1.Text && "字体大小为:" && Round(Picture2.FontSize)
End Sub
Private Sub Combo1_Click() '设置字体
If Left(Combo1.Text, 1) = "@" Then
'因为字体名前有“@”文字将横向显示,以下避免这种情况发生
Picture2.FontName = Right(Combo1.Text, Len(Combo1.Text) - 1)
Else
Picture2.FontName = Combo1.Text
End If
TextFill
End Sub

Private Sub Command1_Click() '改变显示的文字
Outtext = InputBox("请输入预填充背景的文字", "输入文字", "实例")
TextFill
End Sub
Private Sub Command2_Click() '设置字体大小
Picture2.FontSize = CInt(InputBox("请输入文字大小,最好大于50", "设置大小", "100"))
TextFill
End Sub
Private Sub Command3_Click() '选择填充图片
CommonDialog1.Filter = "JPEG File(*.jpg)|*.jpg|BMP File(*.bmp)|*.bmp|All file(*.*)|*.*"
CommonDialog1.ShowOpen
Picture2.Picture = LoadPicture(CommonDialog1.FileName)
TextFill
End Sub
Private Sub Command4_Click( ) '结束程序
End
End Sub
Private Sub Form_Load( )
Dim I As Integer
Picture2.Left = 0
Picture2.Top = 0
Picture2.AutoSize = True
Form1.Caption = "图片填充效果"
'初始化字体列表
For I = 0 To Screen.FontCount - 1
Combo1.AddItem Screen.Fonts(I)
Next I
Picture2.FontSize = 100
Picture2.FontName = Combo1.Text
Outtext = "填充"
TextFill
End Sub
按下F5键运行程序,即可在Picture1中看到填充有Picture2默认图片的文字显示(如图),点击组合框,可以设置文字字体,点击“输入文字”按钮可以打开文字输入框修改显示的文字,点击“字体大小”可以利用输入框设置字体大小,点击“更改图片”则可以选择不同的图片来填充文字,并且以上功能是马上生效,及时看到变化效果,最后点击“退出”按钮可以退出程序。以上程序在Windows 98/Me/2000+VB6.0中文版调试通过。
|