www.pudn.com > imagescale---raw.zip > BasAPI.bas


Attribute VB_Name = "BasAPI" 
Option Explicit 
 
'## 设备场景函数 ############################### 
'== Fun ======================================== 
'CreateCompatibleDC 创建一个与特定设备场景一致的内存设备场景。返回值:Long,新设备场景句柄,若出错则为零 
'DeleteDC           删除专用设备场景或信息场景,释放所有相关窗口资源。不要将它用于GetDC函数取回的设备场景。返回值:Long,执行成功则为非零,失败则为零 
Public Declare Function CreateCompatibleDC Lib "gdi32" (ByVal hDC As Long) As Long 
Public Declare Function DeleteDC Lib "gdi32" (ByVal hDC As Long) As Long 
 
'== Const ====================================== 
'== Type ======================================= 
 
 
'## 光栅运算函数 ############################### 
'== Fun ======================================== 
'BitBlt            将一幅位图从一个设备场景复制到另一个。源和目标DC相互间必须兼容。返回值:Long,非零表示成功,零表示失败。会设置GetLastError 
'SetStretchBltMode 指定StretchBlt 和 StretchDIBits函数的伸缩模式。这种伸缩模式定义了Windows如何对伸缩过程中剔除的扫描线进行控制。对于VB窗体和控件,倘若在API绘图过程中使用这个函数,建议恢复原来的StretchBlt模式 
'StretchBlt        将一幅位图从一个设备场景复制到另一个。源和目标DC相互间必须兼容。这个函数会在设备场景中定义一个目标矩形,并在位图中定义一个源图象。源矩形会根据需要进行伸缩,以便与目标矩形的大小相符。返回值:Long,非零表示成功,零表示失败。会设置GetLastError 
Public 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 
Public Declare Function SetStretchBltMode Lib "gdi32" (ByVal hDC As Long, ByVal nStretchMode As Long) As Long 
Public Declare Function StretchBlt Lib "gdi32" (ByVal hDC 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 nSrcWidth As Long, ByVal nSrcHeight As Long, ByVal dwRop As Long) As Long 
 
'== Const ====================================== 
'== Type ======================================= 
Public Const STRETCH_ANDSCANS = 1    '默认设置。剔除的线段与剩下的线段进行AND运算。这个模式通常应用于采用了白色背景的单色位图 
Public Const STRETCH_ORSCANS = 2     '剔除的线段被简单的清除。这个模式通常用于彩色位图 
Public Const STRETCH_DELETESCANS = 3 '剔除的线段与剩下的线段进行OR运算。这个模式通常应用于采用了白色背景的单色位图 
Public Const STRETCH_HALFTONE = 4    '目标位图上的像素块被设为源位图上大致近似的块。这个模式要明显慢于其他模式 
 
 
'## 绘图函数 ################################### 
'== Fun ======================================== 
'DeleteObject 用这个函数删除GDI对象,比如画笔、刷子、字体、位图、区域以及调色板等等。对象使用的所有系统资源都会被释放。返回值:Long,非零表示成功,零表示失败 
'GetObject    取得对指定对象进行说明的一个结构。windows手册建议用GetObject这个名字来引用该函数。GetObjectAPI在vb中用于避免与GetObject关键字混淆。返回值:Long,如lpObject设为零(用ByVal As Long在这种情况下传递一个NULL参数),则必须设置缓冲区的长度。如执行成功,返回载入结构内部的实际字节数;如失败,返回零值 
'SelectObject 每个设备场景都可能有选入其中的图形对象。其中包括位图、刷子、字体、画笔以及区域等等。一次选入设备场景的只能有一个对象。选定的对象会在设备场景的绘图操作中使用。例如,当前选定的画笔决定了在设备场景中描绘的线段颜色及样式。返回值:Long,与以前选入设备场景的相同hObject类型的一个对象的句柄,零表示出错。如选定的对象是一个区域(Region),结果就是下列常数之一:SIMPLEREGION, COMPLEXREGION 或 NULLREGION 对区域进行描述, GDI_ERROR 表示出错 
Public Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long 
Public Declare Function GetObjectAPI Lib "gdi32" Alias "GetObjectA" (ByVal hObject As Long, ByVal nCount As Long, lpObject As Any) As Long 
Public Declare Function SelectObject Lib "gdi32" (ByVal hDC As Long, ByVal hObject As Long) As Long 
 
'== Const ====================================== 
'== Type ======================================= 
Public Type BitMap 
    bmType As Long 
    bmWidth As Long 
    bmHeight As Long 
    bmWidthBytes As Long 
    bmPlanes As Integer 
    bmBitsPixel As Integer 
    bmBits As Long 
End Type 
 
 
'## 硬件与系统函数 ############################# 
'== Fun ======================================== 
'CopyMemory  复制内存 
'timeGetTime 取得时间。单位为 毫秒 
'ZeroMemory  清空内存 
Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long) 
Public Declare Function timeGetTime Lib "winmm.dll" () As Long 
Public Declare Sub ZeroMemory Lib "kernel32" Alias "RtlZeroMemory" (Destination As Any, ByVal Length As Long) 
 
'== Const ====================================== 
'== Type =======================================