精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>● VB和Basic>>〓〓.VB电子文档集锦.〓〓>>《老猫:VB声明API》>>VB API:位图、图标和光栅运算函数 第一页

主题:VB API:位图、图标和光栅运算函数 第一页
发信人: winsy(鹰派)
整理人: winsy(2003-03-12 08:56:11), 站内信件
BitBlt 

VB声明 
Declare Function BitBlt Lib "gdi32" Alias "BitBlt" (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 
说明 
将一幅位图从一个设备场景复制到另一个。源和目标DC相互间必须兼容 
返回值 
Long,非零表示成功,零表示失败。会设置GetLastError 
参数表 
参数 类型及说明 
hDestDC Long,目标设备场景 
x,y Long,对目标DC中目标矩形左上角位置进行描述的那个点。用目标DC的逻辑坐标表示 
nWidth,nHeight Long,欲传输图象的宽度和高度 
hSrcDC Long,源设备场景。如光栅运算未指定源,则应设为0 
xSrc,ySrc Long,对源DC中源矩形左上角位置进行描述的那个点。用源DC的逻辑坐标表示 
dwRop Long,传输过程要执行的光栅运算 
注解 
在NT环境下,如在一次世界传输中要求在源设备场景中进行剪切或旋转处理,这个函数的执行会失败
如目标和源DC的映射关系要求矩形中像素的大小必须在传输过程中改变,那么这个函数会根据需要自动伸缩、旋转、折叠、或切断,以便完成最终的传输过程
 

CopyIcon 

VB声明 
Declare Function CopyIcon Lib "user32" Alias "CopyIcon" (ByVal hIcon As Long) As Long 
说明 
制作指定图标或鼠标指针的一个副本。这个副本从属于发出调用的应用程序 
返回值 
Long,新图标的句柄,零表示失败。会设置GetLastError 
参数表 
参数 类型及说明 
hIcon Long,欲复制的图标或指针的句柄 
注解 
由于这个函数在win32中可复制鼠标指针,所以win32未提供对win16函数CopyCursor的支持
从一个DLL或其他应用程序载入一个图标后,只有DLL或应用程序保持载入状态,那个图标才可使用。这个函数允许我们制作图标从属于自己应用程序的一个副本。一旦不再需要,必须用DestroyIcon函数将其清除,以释放占用的系统资源
 

CopyImage 

VB声明 
Declare Function CopyImage Lib "user32" Alias "CopyImage" (ByVal handle As Long, ByVal un1 As Long, ByVal n1 As Long, ByVal n2 As Long, ByVal un2 As Long) As Long 
说明 
复制位图、图标或指针,同时在复制过程中进行一些转换工作 
返回值 
Long,执行成功则返回新图象的句柄,零表示失败。会设置GetLastError 
参数表 
参数 类型及说明 
handle Long,欲复制的图象的句柄 
un1 Long,下述常数之一:MAGE_BITMAP, IMAGE_CURSOR 或 IMAGE_ICON 
n1 Long,副本以像素表示的宽度 
n2 Long,副本以像素表示的高度 
un2 Long,下述常数任意组合: 
LR_DELETEORG 删除原来的图象 
LR_COPYRETURNORG 忽略n1和n2设置 
LR_MONOCHROME 创建一个单色副本 
LR_COPYFROMRESOURCE 在原始资源的基础上创建一个副本,原始图象即是从那个资源中载入的。假设我们想为一个32×32的图标制作一个64×64的副本。如果不设这个标志,CopyImage会直接放大原来的图标。而使用这个标志后,CopyImage首先检查资源文件中是否存在这个图标的一个64×64版本,如果存在,就直接载入品质更好的图象 
注解 
这个函数通常在希望复制已选入其他设备场景的一幅位图时使用——例如,复制已成为ImageList控件一部分的某幅位图。选定的位图将不能使用,因为一次只能将位图选入一个设备场景
 

CreateBitmap 

VB声明 
Declare Function CreateBitmap Lib "gdi32" Alias "CreateBitmap" (ByVal nWidth As Long, ByVal nHeight As Long, ByVal nPlanes As Long, ByVal nBitCount As Long, lpBits As Any) As Long 
说明 
按照规定的格式创建一幅与设备有关位图 
返回值 
Long,执行成功返回位图的句柄,零表示失败 
参数表 
参数 类型及说明 
nWidth Long,位图宽度,以像素为单位 
nHeight Long,位图高度,以像素为单位 
nPlanes Long,色层数量 
nBitCount Long,每像素的位数 
lpBits Any,指向欲载入位图的数据的指针。可设为零,表示不对位图进行初始化(用ByVal传递一个零值)。这个数据的格式必须与设备的要求相符。扫描线必须对齐16位字边界 
注解 
一旦不再需要,记住用DeleteObject函数释放位图占用的内存和资源
可用这个函数创建单色位图(1层,每像素一位)。对于彩色位图,则应使用CreateCompatibleBitmap。这个函数可以胜任工作;但要注意,用它创建的位图在使用时会稍慢一些,因为Windows每次使用的时候都必须检查它的位图格式
如果nWidth和nHeight为零,返回的位图就是一个1×1的单色位图
 

CreateBitmapIndirect 

VB声明 
Declare Function CreateBitmapIndirect Lib "gdi32" Alias "CreateBitmapIndirect" (lpBitmap As BITMAP) As Long 
说明 
创建一幅与设备有关位图 
返回值 
Long,执行成功返回位图句柄,零表示失败 
参数表 
参数 类型及说明 
lpBitmap BITMAP,对一幅逻辑位图进行描述的结构。这个结构中的字段与CreateBitmap函数的参数大致对应 
注解 
如使用由GetObject函数获得的BITMAP结构,注意GetObject不会取回位图数据——只有位图的大小和配置信息
如果nWidth和nHeight为零,返回的位图就是一个1×1的单色位图。也请参考对CreateBitmap函数的注解
 

CreateCompatibleBitmap 

VB声明 
Declare Function CreateCompatibleBitmap Lib "gdi32" Alias "CreateCompatibleBitmap" (ByVal hdc As Long, ByVal nWidth As Long, ByVal nHeight As Long) As Long 
说明 
创建一幅与设备有关位图,它与指定的设备场景兼容 
返回值 
Long,执行成功返回位图句柄,零表示失败 
参数表 
参数 类型及说明 
hdc Long,设备场景的句柄 
nWidth Long,位图宽度,以像素为单位 
nHeight Long,位图高度,以像素为单位 
注解 
内存设备场景即与彩色位图兼容,也与单色位图兼容。这个函数的作用是创建一幅与当前选入hdc中的场景兼容。对一个内存场景来说,默认的位图是单色的。倘若内存设备场景有一个DIBSection选入其中,这个函数就会返回DIBSection的一个句柄。如hdc是一幅设备位图,那么结果生成的位图就肯定兼容于设备(也就是说,彩色设备生成的肯定是彩色位图)
如果nWidth和nHeight为零,返回的位图就是一个1×1的单色位图
一旦位图不再需要,一定用DeleteObject函数释放它占用的内存及资源
 

CreateCursor 

VB声明 
Declare Function CreateCursor Lib "user32" Alias "CreateCursor" (ByVal hInstance As Long, ByVal nXhotspot As Long, ByVal nYhotspot As Long, ByVal nWidth As Long, ByVal nHeight As Long, lpANDbitPlane As Any, lpXORbitPlane As Any) As Long 
说明 
创建一个鼠标指针 
返回值 
Long,执行成功返回指针的句柄,零表示失败。会设置GetLastError 
参数表 
参数 类型及说明 
hInstance Long,准备拥有指针的应用程序的实例的句柄。可用GetWindowWord函数获得拥有一个窗体或控件的一个实例的句柄 
nXhotspot,nYhotspot Long,鼠标指针图象中代表准确指针位置的X,Y坐标 
nWidth Long,指针图象的宽度。可用GetSystemMetrics函数判断一个特定设备的正确编号。VGA的编号是32 
nHeight Long,指针图象的高度。可用GetSystemMetrics函数判断一个特定设备的正确编号。VGA的编号是32 
lpANDbitPlane Any,指向AND位图数据的指针 
lpXORbitPlane Any,指向XOR位图数据的指针 
注解 
一旦不再需要,注意用DestroyCursor函数释放鼠标指针占用的内存及资源
 

CreateDIBitmap 

VB声明 
Declare Function CreateDIBitmap Lib "gdi32" Alias "CreateDIBitmap" (ByVal hdc As Long, lpInfoHeader As BITMAPINFOHEADER, ByVal dwUsage As Long, lpInitBits As Any, lpInitInfo As BITMAPINFO, ByVal wUsage As Long) As Long 
说明 
根据一幅与设备无关的位图创建一幅与设备有关的位图 
返回值 
Long,执行成功返回位图句柄,零表示失败 
参数表 
参数 类型及说明 
hdc Long,一个设备场景的句柄,该设备场景定义了要创建的与设备有关位图的配置信息 
lpInfoHeader BITMAPINFOHEADER,对DIB(与设备无关位图)的格式进行描述的一个结构 
dwUsage Long,如不应对位图数据进行初始化,那么设为零。如设为CBM_INIT,表示根据lpInitBits 和 lpInitInfo参数对位图进行初始化 
lpInitBits Any,指向DIB格式中的位图数据的一个指针,格式是由lpInitInfo指定的 
lpInitInfo BITMAPINFO,这个结构对lpInitBits DIB的格式及颜色进行了说明 
wUsage Long,下述常数之一:
DIB_PAL_COLORS——颜色表包含对当前选定的调色板的索引
DIB_RGB_COLORS——颜色表包含了RGB颜色 
注解 
一旦不再需要,记住用DeleteObject函数释放位图占用的内存及资源
 

CreateDIBSection 

VB声明 
Declare Function CreateDIBSection Lib "gdi32" Alias "CreateDIBSection" (ByVal hDC As Long, pBitmapInfo As BITMAPINFO, ByVal un As Long, ByVal lplpVoid As Long, ByVal handle As Long, ByVal dw As Long) As Long 
说明 
创建一个DIBSection。这是一个GDI对象,可象一幅与设备有关位图那样使用。但是,它在内部作为一幅与设备无关位图保存 
返回值 
Long,执行成功返回DIBSection位图的句柄,零表示失败。会设置GetLastError 
参数表 
参数 类型及说明 
hDC Long,一个设备场景的句柄。如dw设为DIB_PAL_COLORS,那么DIB颜色表就会用来自逻辑调色板的颜色进行初始化 
pBitmapInfo BITMAPINFO,这个结构初始化成欲创建的那幅位图的配置数据 
un Long,下述常数之一: 
DIB_PAL_COLORS BITMAPINFO包含了一个16位调色板索引的数组 
DIB_RGB_COLORS BITMAPINFO包含了一个颜色表,其中保存有32位颜色(RGBQUAD) 
lplpVoid Long,用于载入DIBSection数据区的内存地址 
handle Long,指向一个文件映射对象的可选句柄,位图将在其中创建。如设为零,Windows会自动分配内存 
dw Long,如指定了句柄,就用这个参数指定位图数据在文件映射对象中的偏移量 
注解 
一旦不再需要,记住用DeleteObject函数删除DIBSection位图
如Windows分配了一个内存缓冲区,那么对象删除以后,缓冲区也会自动删除。如指定了一个文件映射对象,则不会自动将其清除
在直接访问DIB内存之前,首先必须保证Windows已完成了绘图(记住,Windows可能对绘图操作进行了排列处理)。通过调用gdiFlush函数,可确保完成所有未决的绘图操作
 

CreateIcon 

VB声明 
Declare Function CreateIcon Lib "user32" Alias "CreateIcon" (ByVal hInstance As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal nPlanes As Byte, ByVal nBitsPixel As Byte, lpANDbits As Byte, lpXORbits As Byte) As Long 
说明 
创建一个图标 
返回值 
Long,执行成功返回图标的句柄,零表示失败。会设置GetLastError 
参数表 
参数 类型及说明 
hInstance Long,准备拥有图标的应用程序的实例的句柄。可用GetWindowWord函数获得拥有一个窗体或控件的一个实例的句柄 
nWidth Long,图标图象的宽度。可用GetSystemMetrics函数判断一个特定设备的正确编号。VGA的编号是32 
nHeight Long,图标图象的高度。可用GetSystemMetrics函数判断一个特定设备的正确编号。VGA的编号是32 
nPlanes Byte,lpXORbits数据数组中的色层数量 
nBitsPixel Byte,lpXORbits数据数组中每像素的位数 
lpANDbits Byte,指向AND位图数据的指针 
lpXORbits Byte,指向XOR位图数据的指针 
注解 
一旦不再需要,注意用DestroyIcon函数释放鼠标指针占用的内存及资源
 

CreateIconIndirect 

VB声明 
Declare Function CreateIconIndirect Lib "user32" Alias "CreateIconIndirect" (piconinfo As ICONINFO) As Long 
说明 
创建一个图标 
返回值 
Long,执行成功返回图标的句柄,零表示失败。会设置GetLastError 
参数表 
参数 类型及说明 
piconinfo ICONINFO,这个结构包含的信息与欲创建的图标有关。图标是随同两幅参考位图创建出来的。这个函数允许我们在给定XOR和AND位图的前提下创建图标,而不是给出实际的掩模数组 
注解 
一旦不再需要,注意用DestroyIcon函数释放鼠标指针占用的内存及资源
 

DestroyCursor 

VB声明 
Declare Function DestroyCursor Lib "user32" Alias "DestroyCursor" (ByVal hCursor As Long) As Long 
说明 
清除指定的鼠标指针,并释放它占用的所有系统资源。不要用这个函数清除随同LoadCursor函数载入的系统指针资源 
返回值 
Long,非零表示成功,零表示失败。会设置GetLastError 
参数表 
参数 类型及说明 
hCursor Long,欲清除的指针对象的句柄 


DestroyIcon 

VB声明 
Declare Function DestroyIcon Lib "user32" Alias "DestroyIcon" (ByVal hIcon As Long) As Long 
说明 
清除图标 
返回值 
Long,非零表示成功,零表示失败。会设置GetLastError 
参数表 
参数 类型及说明 
hIcon Long,图标句柄 
注解 
不要用这个函数清除随同LoadIcon函数载入的系统固有图标
 

DrawIcon 

VB声明 
Declare Function DrawIcon Lib "user32" Alias "DrawIcon" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal hIcon As Long) As Long 
说明 
在指定的位置画一个图标 
返回值 
Long,非零表示成功,零表示失败。会设置GetLastError 
参数表 
参数 类型及说明 
hdc Long,设备场景 
x,y Long,想描绘图标的位置(逻辑坐标) 
hIcon Long,欲描绘图标的句柄 


DrawIconEx 

VB声明 
Declare Function DrawIconEx Lib "user32" Alias "DrawIconEx" (ByVal hdc As Long, ByVal xLeft As Long, ByVal yTop As Long, ByVal hIcon As Long, ByVal cxWidth As Long, ByVal cyWidth As Long, ByVal istepIfAniCur As Long, ByVal hbrFlickerFreeDraw As Long, ByVal diFlags As Long) As Long 
说明 
描绘一个图标或鼠标指针。与DrawIcon相比,这个函数提供了更多的功能 
返回值 
Long,非零表示成功,零表示失败。会设置GetLastError 
参数表 
参数 类型及说明 
hdc Long,要在其中画图的一个设备场景的句柄 
xLeft,yTop Long,图标左上角的位置,用逻辑坐标表示 
hIcon Long,要描绘的图标的句柄 
cxWidth,cyWidth Long,希望的图标宽度和高度。图标会自动缩放,与指定的值相符 
istepIfAniCur Long,如果hIcon是个动画指针,那么该参数指定描绘动画中的哪幅图象。注意Win32不能区分图标和指针 
hbrFlickerFreeDraw Long,如设为一个刷子句柄,那么函数会将图标画入一幅内存位图,并用背景色填充。随后,将图象直接复制到指定的位置。这样做可绘图时减少闪烁(因为画图过程中重现) 
diFlags Long,下述常数之一: 
DI_COMPAT 描绘标准的系统指针,而不是指定的图象 
DI_DEFAULTSIZE 忽略cxWidth和cyWidth设置,并采用原始的图标大小 
DI_IMAGE 绘图时使用图标的XOR部分(即图标没有透明区域) 
DI_MASK 绘图时使用图标的MASK部分(如单独使用,可获得图标的掩模) 
DI_NORMAL 用常规方式绘图(合并 DI_IMAGE 和 DI_MASK) 
注解 
应检查Windows95是否与指定的标志及参数兼容。Win32用户手册宣称函数与Windows 95是兼容的,但在实际运用中发现它有一定的限制
 

ExtractAssociatedIcon 

VB声明 
Declare Function ExtractAssociatedIcon Lib "shell32.dll" Alias "ExtractAssociateIconA" (ByVal hInst As Long, ByVal lpIconPath As String, lpiIcon As Long) As Long 
说明 
这个函数可判断一个可执行程序或DLL中是否存在图标,或是否有图标与系统注册表中指定的文件存在关联。随后,它允许我们提取出那些图标 
返回值 
Long,如果找到任何图标,就返回图标的句柄;否则返回零 
参数表 
参数 类型及说明 
hInst Long,当前应用程序的实例句柄。也可用GetWindowWord函数取得拥有一个窗体或控件的示例的句柄 
lpIconPath String,指定一个文件名,准备从该文件中提取图标。如果文件并非执行程序或DLL本身,但通过系统注册表与一个可执行文件关联,就用这个字串装载可执行程序的名字 
lpiIcon Long,在其中装载图标在可执行文件中的资源标识符 
注解 
注意至少要把lpIconPath字串定义成MAX_PATH个字符的长度
 

[关闭][返回]