设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 2930|回复: 2
打印 上一主题 下一主题

API实现完美的图片出现效果-->zhuyiwen转移

[复制链接]
跳转到指定楼层
1#
发表于 2002-9-27 22:37:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在用Visual Basic编程的时候,通常要调用图片,如果图片出现的时候是以各种完美的效果出现的,(如马赛克效果,百叶窗效果等)则你的程序就会显得更加灵活,你的程序就会更加专业化。本文讲述了Visual Basic中如何调用API函数,以及用API函数中的BitBlt函数实现各种完美的图片出现效果的过程。

§1 一般的图片出现效果

  一般情况下,要使Visual Basic中的图片出现,例如,要显示Picture1中的图片,只需一句代码:

Picture1.Visible=True

  使用以上方法时,图片是突然出现的。也可以编复杂一点的代码,使图片从左到右、从上到下或从中间向四周扩大。例如,使Picture1中的图片从左到右出现,其代码为:

Picture1.Width = 0

Picture1.Visible = True

For i = 0 To 5000 Step 50 注释:5000代表图片的高度

Picture1.Width = i

Next i

使Picture1中的图片从上到下出现的代码为:

Picture1.Height = 0

Picture1.Visible = True

For i = 0 To 4000 Step 40 注释:4000代表图片的宽度

Picture1.Height = i

Next i

使Picture1中的图片从中间向四周扩大的代码为:

Picture1.Width = 0

Picture1.Height = 0

Picture1.Visible = True

For i = 0 To 100

Picture1.Width = Picture1.Width + 50

Picture1.Height = Picture1.Height + 40

Picture1.Left = Picture1.Left - 100

Picture1.Top = Picture1.Top - 80

Next i

  当然,你可以灵活地应用以上办法实现其他更加好看的图片出现效果。然而,同Authorware等其他软件编制的程序相比,你的图片出现效果仍然会黯然失色,因为Authorware编程时,可以很容易地实现从上到下、从左到右、百叶窗、开门、关门等完美的图片出现效果,要在Visual Basic中做到这些效果并非易事。

但“天无绝人之路”,强大的Windows API函数中的BitBlt函数将帮助您实现这一愿望。

§2 BitBlt函数

一、 BitBlt函数的功能

BitBlt API函数的功能是将屏幕上任何一块拷贝到屏幕上其它任何一个地方。

二、 声明BitBlt函数

1. 运行Visual Basic4.0程序组中的API Text Viewer程序项。
2. 在API Text Viewer中,单击File菜单下的Load Text File...命令。

3. 在出现的Select a Text API File对话框中,选择Win32api.txt文件。

4. 为了使以后拷贝Windows API函数更快,你可以将Win32api.txt文件转换成为一个数据库。如图,单击“是(Y)”。

5. 在API Type下拉框中选择Declare。

6. 在Available Items中选择BitBlt,如图,单击Add按纽,于是BitBlt便出现在Selected Items框中,单击Copy按纽。BitBlt函数变拷贝到剪贴板上。

7. 关闭API Text Viewer,打开Visual Basic程序,使用Insert菜单下的Module命令新建一个Module1,使用Edit菜单下的Paste命令,将剪贴板上的BitBlt函数拷贝到Module1中。这样,在您的程序中,就可以使用BitBlt函数了。

三、BitBlt函数中各参数简介

Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long

  以上是BitBlt函数的声明格式,其中,各参数定义如下:

参数

描述

hDestDC

接收位图的设备描述表

X

目标矩形左上角的逻辑X坐标

Y

目标矩形左上角的逻辑Y坐标

nWidth

目标矩形的宽度

nHeight

目标矩形的高度

hSrcDC

源设备描述表

xSrc

源位图左上角的逻辑X坐标

ySrc

源位图左上角的逻辑Y坐标

dwRop

拷贝模式

dwRop的各种可能值为:

&HCC0020

dest=source

&HEE0086

dest=source OR dest

&H8800C6

dest=source AND dest

&H660046

dest=source XOR dest

&H440328

dest=source AND (NOT dest)

&H330008

dest=not source

&H1100A6

dest=(NOT source)AND(NOT dest)

&HC000CA

dest=source AND pattern

&HBB0226

dest=(NOT source) OR dest

&HF00021

dest=pattern

&HFB0A09

dest=Dpsnoo

&H5A0049

dest=pattern XOR dest

&H550009

dest=NOT dest

&H42&

dest=BLACK

&HFF0062

dest=WHITE

在本程序中使用的BitBlt函数均定义dwRop=HCC0020,如果你定义dwRop为其他值,会收到其他异想不到的效果。

§3 用BitBlt函数实现各种各样的图片出现效果

实现髦滞计?鱿中Ч?幕?驹?硎牵荷柚昧礁鐾计?騊icture1和Picture2,在Picture1中装入要显示的图片,(可以在窗体设计时就装好,也可以在程序运行过程中装入。)将Picture1中的图片以各种方法拷贝到Picture2中,从而实现各种各样的图片出现效果。

先在Picture1中装入待显示的图片,并设置Picture1的属性为AutoRedraw=True,Visible=False, 设置Picture2的属性为AutoRedraw=False,Visible=True,设置Form的属性为ScaleMode=3。

一、从上到下效
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2009-4-28 00:31:21 | 只看该作者
老朱:很长没看完,只想知道能不能在access中使用?
3#
发表于 2016-3-5 19:08:09 | 只看该作者
111111111111111111111
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2025-1-4 06:13 , Processed in 0.079765 second(s), 26 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表