VB 版 (精华区)
发信人: bloom (小石头长大了), 信区: VB
标 题: 设备场景函数(1)
发信站: 哈工大紫丁香 (2000年07月23日15:55:04 星期天), 转信
目录
CombineRgn 将两个区域组合为一个新区域
CombineTransform 驱动世界转换。它相当于依顺序进行两次转换
CreateCompatibleDC 创建一个与特定设备场景一致的内存设备场景
CreateDC 为专门设备创建设备场景
CreateEllipticRgn 创建一个椭圆
CreateEllipticRgnIndirect 创建一个内切于特定矩形的椭圆区域
CreateIC 为专用设备创建一个信息场景
CreatePolygonRgn 创建一个由一系列点围成的区域
CreatePolyPolygonRgn 创建由多个多边形构成的区域。每个多边形都应是封闭的
CreateRectRgn 创建一个矩形区域
CreateRectRgnIndirect 创建一个矩形区域
CreateRoundRectRgn 创建一个圆角矩形
DeleteDC 删除专用设备场景或信息场景,释放所有相关窗口资源
DPtoLP 将点阵从设备坐标转换到专用设备场景逻辑坐标
EqualRgn 确定两个区域是否相等
ExcludeClipRect 从专用设备场景的剪裁区中去掉一个矩形区。矩形内不能进行绘图
___________________________________________________________________
CombineRgn
VB声明
Declare Function CombineRgn Lib "gdi32" Alias "CombineRgn" (ByVal hDestRgn A
s Long, ByVal hSrcRgn1 As Long, ByVal hSrcRgn2 As Long, ByVal nCombineMode A
s Long) As Long
说明
将两个区域组合为一个新区域
返回值
Long,下列常数之一:
COMPLEXREGION:区域有互相交叠的边界
SIMPLEREGION:区域边界没有互相交叠
NULLREGION:区域为空
ERRORAPI:不能创建组合区域
参数表
参数 类型及说明
hDestRgn Long,包含组合结果的区域句柄
hSrcRgn1 Long,源区域1
hSrcRgn2 Long,源区域2
nCombineMode Long,组合两区域的方法。可设为下述常数
RGN_AND hDestRgn被设置为两个源区域的交集
RGN_COPY hDestRgn被设置为hSrcRgn1的拷贝
RGN_DIFF hDestRgn被设置为hSrcRgn1中与hSrcRgn2不相交的部分
RGN_OR hDestRgn被设置为两个区域的并集
RGN_XOR hDestRgn被设置为除两个源区域OR之外的部分
___________________________________________________
CombineRgn
VB声明
Declare Function CombineRgn Lib "gdi32" Alias "CombineRgn" (ByVal hDestRgn A
s Long, ByVal hSrcRgn1 As Long, ByVal hSrcRgn2 As Long, ByVal nCombineMode A
s Long) As Long
说明
将两个区域组合为一个新区域
返回值
Long,下列常数之一:
COMPLEXREGION:区域有互相交叠的边界
SIMPLEREGION:区域边界没有互相交叠
NULLREGION:区域为空
ERRORAPI:不能创建组合区域
参数表
参数 类型及说明
hDestRgn Long,包含组合结果的区域句柄
hSrcRgn1 Long,源区域1
hSrcRgn2 Long,源区域2
nCombineMode Long,组合两区域的方法。可设为下述常数
RGN_AND hDestRgn被设置为两个源区域的交集
RGN_COPY hDestRgn被设置为hSrcRgn1的拷贝
RGN_DIFF hDestRgn被设置为hSrcRgn1中与hSrcRgn2不相交的部分
RGN_OR hDestRgn被设置为两个区域的并集
RGN_XOR hDestRgn被设置为除两个源区域OR之外的部分
_________________________________________________________
CreateCompatibleDC
VB声明
Declare Function CreateCompatibleDC Lib "gdi32" Alias "CreateCompatibleDC" (
ByVal hdc As Long) As Long
说明
创建一个与特定设备场景一致的内存设备场景
返回值
Long,新设备场景句柄,若出错则为零
参数表
参数 类型及说明
hdc Long,设备场景句柄。新的设备场景将与它一致。也可能为0以创建一个与屏幕一致
的设备场景
注解
在绘制之前,先要为该设备场景选定一个位图。不再需要时,该设备场景可用DeleteDC
函数删除。删除前,其所有对象应回复初始状态
__________________________________________________________________
CreateDC, CreateDCBynum
VB声明
Declare Function CreateDC& Lib "gdi32" Alias "CreateDCA" (ByVal lpDriverName
As String, ByVal lpDeviceName As String, ByVal lpOutput As String, lpInitDa
ta As DEVMODE)
Declare Function CreateDCBynum& Lib "gdi32" Alias "CreateDCA" (ByVal lpDrive
rName As String, ByVal lpDeviceName As String, ByVal lpOutput As String, lpI
nitData As Long)
说明
为专门设备创建设备场景
返回值
Long,新设备场景句柄,若出错则为零
参数表
参数 类型及说明
lpDriverName String,用vbNullString传递null值给该参数,除非:1、用DISPLAY,是
获取整个屏幕的设备场景;2、用WINSPOOL,则是访问打印驱动
lpDeviceName String,所用专门设备的名称。该名由打印管理器分配显示
lpOutput String,用vbNullString传递null值给该参数
lpInitData DEVMODE,这个结构保存初始值。用CreateDCBynum传递0(NULL)值则适用
默认设置
注解
在绘制之前,先要为该设备场景选定一个位图。不再需要时,该设备场景可用DeleteDC
函数删除。删除前,其所有对象应回复初始状态。若有设备初始设置可用DocumentProp
erties API函数载入DEVMODE结构。使用屏幕设备场景(DISPLAY)时要小心,因为它会
干扰其他应用程序的外观
示例:靠近屏幕左上角画一个矩形
dc& = CreateDCBynum("DISPLAY", vbNullString, vbNullString, 0)
dl& = Rectangle(dc&, 5, 5, 100, 100)
________________________________________________________________
CreateEllipticRgn
VB声明
Declare Function CreateEllipticRgn Lib "gdi32" Alias "CreateEllipticRgn" (By
Val X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Lon
g
说明
创建一个椭圆,该椭圆与X1,Y1和X2,Y2坐标点确定的矩形内切
返回值
Long,执行成功则为区域句柄,失败则为零
参数表
参数 类型及说明
X1,Y1 Long,矩形左上角X,Y坐标
X2,Y2 Long,矩形右下角X,Y坐标
注解
不用时一定要用DeleteObject函数删除区域。用Ellipse API函数绘出的椭圆与该椭圆区
域不完全相同,因为本函数的绘图计算不包括矩形的下边和右边
____________________________________________________________________
CreateEllipticRgnIndirect
VB声明
Declare Function CreateEllipticRgnIndirect Lib "gdi32" Alias "CreateElliptic
RgnIndirect" (lpRect As Rect) As Long
说明
创建一个内切于特定矩形的椭圆区域
返回值
Long,执行成功则返回区域句柄,失败则为零
参数表
参数 类型及说明
lpRect Long,定义要创建的椭圆区域尺寸的矩形
注解
不用时一定要用DeleteObject函数删除该区域
___________________________________________________
CreateIC
VB声明
Declare Function CreateIC Lib "gdi32" Alias "CreateICA" (ByVal lpDriverName
As String, ByVal lpDeviceName As String, ByVal lpOutput As String, lpInitDat
a As DEVMODE) As Long
说明
为专用设备创建一个信息场景。信息场景可用来快速获取某设备的信息而无须创建设备
场景这样的系统开销。它可作为参数传递给GetDeviceCaps一类的信息函数以替代设备场
景参数
返回值
Long,执行成功为信息场景句柄,失败则为零
参数表
参数 类型及说明
lpDriverName String,用vbNullString传递null值给该参数,除非:1、用DISPLAY,是
获取整个屏幕的设备场景;2、用WINSPOOL,则是访问打印驱动
lpDeviceName String,所用专门设备的名称。该名由打印管理器分配显示
lpOutput String,用vbNullString传递null值给该参数
lpInitData DEVMODE,这个结构保存初始值
注解
Long,不用时一定要用DeleteDC函数删除设备场景。进一步的说明参考CreateDC函数
示例:为一个名为“Color Stylus”的打印机取回信息场景
dc& = CreateICBynum("WINSPOOL", "Color Stylus", vbNullString,0)
______________________________________________________________________
CreatePolygonRgn
VB声明
Declare Function CreatePolygonRgn Lib "gdi32" Alias "CreatePolygonRgn" (lpPo
int As POINTAPI, ByVal nCount As Long, ByVal nPolyFillMode As Long) As Long
说明
创建一个由一系列点围成的区域。windows在需要时自动将最后点与第一点相连以封闭多
边形
返回值
Long,执行成功为创建的区域句柄,失败则为0
参数表
参数 类型及说明
lpPoint POINTAPI,nCount个POINTAPI结构中的第一个POINTAPI结构
nCount Long,多边形的点数
nPolyFillMode Long,描述多边形填充模式。可为ALTERNATE 或 WINDING常数。参考Se
tPolyFillMode函数对多边形填充模式的解释
注解
不用时一定要用DeleteObject函数删除该区域
_______________________________________________________
CreatePolyPolygonRgn
VB声明
Declare Function CreatePolyPolygonRgn Lib "gdi32" Alias "CreatePolyPolygonRg
n" (lpPoint As POINTAPI, lpPolyCounts As Long, ByVal nCount As Long, ByVal n
PolyFillMode As Long) As Long
说明
创建由多个多边形构成的区域。每个多边形都应是封闭的
返回值
Long,执行成功则为创建区域的句柄,失败则为零
参数表
参数 类型及说明
lpPoint POINTAPI,nCount个POINTAPI结构中的第一个POINTAPI结构
lpPolyCounts Long,长整数阵列的第一个入口。每个入口包含构成一个封闭多边形的点
数。lpPoint阵列组成了一系列多边形,每个多边形在lpPolyCounts中有一个入口
nCount Long,多边形的点数
nPolyFillMode Long,描述多边形填充模式。可为ALTERNATE 或 WINDING常数。参考Se
tPolyFillMode函数对多边形填充模式的解释
注解
不用时一定要用DeleteObject函数删除该区域
___________________________________________________
CreateRectRgn
VB声明
Declare Function CreateRectRgn Lib "gdi32" Alias "CreateRectRgn" (ByVal X1 A
s Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
说明
创建一个由点X1,Y1和X2,Y2描述的矩形区域
返回值
Long,执行成功为区域句柄,失败则为零
参数表
参数 类型及说明
X1,Y1 Long,矩形左上角X,Y坐标
X2,Y2 Long,矩形右下角X,Y坐标
注解
不用时一定要用DeleteObject函数删除该区域
这个矩形的下边和右边不包含在区域之内
__________________________________________
CreateRectRgnIndirect
VB声明
Declare Function CreateRectRgnIndirect Lib "gdi32" Alias "CreateRectRgnIndir
ect" (lpRect As ) As Long
说明
创建一个由lpRect确定的矩形区域
返回值
Long,执行成功则为区域句柄,失败则为0
参数表
参数 类型及说明
lpRect RECT,要用来创建区域的矩形
注解
参考CreateRectRgn的注解
________________________________________
CreateRoundRectRgn
VB声明
Declare Function CreateRoundRectRgn Lib "gdi32" Alias "CreateRoundRectRgn" (
ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long, ByVa
l X3 As Long, ByVal Y3 As Long) As Long
说明
创建一个圆角矩形,该矩形由X1,Y1-X2,Y2确定,并由X3,Y3确定的椭圆描述圆角弧度
返回值
Long,执行成功则为区域句柄,失败则为0
参数表
参数 类型及说明
X1,Y1 Long,矩形左上角的X,Y坐标
X2,Y2 Long,矩形右下角的X,Y坐标
X3 Long,圆角椭圆的宽。其范围从0(没有圆角)到矩形宽(全圆)
Y3 Long,圆角椭圆的高。其范围从0(没有圆角)到矩形高(全圆)
注解
不用时一定要用DeleteObject函数删除该区域
用该函数创建的区域与用RoundRect API函数画的圆角矩形不完全相同,因为本矩形的右
边和下边不包括在区域之内
_______________________________________
DeleteDC
VB声明
Declare Function DeleteDC Lib "gdi32" Alias "DeleteDC" (ByVal hdc As Long) A
s Long
说明
删除专用设备场景或信息场景,释放所有相关窗口资源。不要将它用于GetDC函数取回的
设备场景
返回值
Long,执行成功则为非零,失败则为零
参数表
参数 类型及说明
hdc Long,将要删除的设备场景
注解
若有对象被选入设备场景,则在调用本函数前应将它们选出。为此,可将初始对象回选
入DC,也可用SaveDC, RestoreDC函数对回复DC为其创建时的状态
在vb里使用
不要将它用于由vb hdc属性获取的设备场景句柄
__________________________________________________
DPtoLP
VB声明
Declare Function DPtoLP Lib "gdi32" Alias "DPtoLP" (ByVal hdc As Long, lpPoi
nt As POINTAPI, ByVal nCount As Long) As Long
说明
将点阵从设备坐标转换到专用设备场景逻辑坐标
返回值
Long,执行成功为非零值,失败则为零
参数表
参数 类型及说明
hdc Long,确定逻辑坐标系统的设备场景句柄
lpPoint POINTAPI,包含有设备坐标点的一个或多个POINTAPI结构的第一入口。每个入
口都将被转换为逻辑坐标(若为世界转换则转换为世界坐标)
nCount Long,lpPoint阵列中的入口数
_________________________________________________________
EqualRgn
VB声明
Declare Function EqualRgn Lib "gdi32" Alias "EqualRgn" (ByVal hSrcRgn1 As Lo
ng, ByVal hSrcRgn2 As Long) As Long
说明
确定两个区域是否相等
返回值
Long,若两区域相等为非零值。若不等为0。若有一个区域无效则返回ERRORAPI
参数表
参数 类型及说明
hSrcRgn1 Long,一个区域的句柄
hSrcRgn2 Long,区域句柄
______________________________________
ExcludeClipRect
VB声明
Declare Function ExcludeClipRect Lib "gdi32" Alias "ExcludeClipRect" (ByVal
hdc As Long, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2
As Long) As Long
说明
从专用设备场景的剪裁区中去掉一个由点X1,Y1和X2,Y2确定的矩形区。矩形内不能进
行绘图
返回值
Long,返回以下常数之一以描述所得剪裁区:
COMPLEXREGION:区域边界互相交叠
SIMPLEREGION:区域边界没有互相交叠
NULLREGION:区域为空
ERRORAPI:发生了错误
参数表
参数 类型及说明
hdc Long,要修改的设备场景
X1,Y1 Long,矩形(逻辑坐标)左上角的X,Y坐标
X2,Y2 Long,矩形(逻辑坐标)右下角的X,Y坐标,矩形的右边和下边不会从剪裁区中
移走
又臭,又硬。
小石头
※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.118.233.140]
--
※ 修改:·bloom 於 07月23日16:04:23 修改本文·[FROM: 202.118.233.140]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:2.560毫秒