剪裁区域
应用程序通过多种方式使用剪裁。Word和电子表格剪裁键盘输入,使其不显示在页面或电子表格的边距中。
计算机辅助设计(CAD)和绘图程序剪裁图形输出,使其不覆盖绘图或图片的边缘。 剪裁公为剪裁区域和剪裁路径,剪裁区域是一个边缘为直线或曲线的区域。 剪裁路径是具有直线、贝塞尔曲线或两者组合的边缘的区域。 剪裁区域是应用程序可以选择到设备上下文中的图形对象之一, (DC) 。 它通常是矩形的。 某些设备上下文提供预定义的或默认的剪辑区域,而另一些则不提供。 应用程序可以对剪裁区域执行各种操作。 其中一些操作需要标识区域的句柄,而有些则不需要。 例如,应用程序可以直接对设备上下文的剪辑区域执行以下操作。 通过将相应线条、弧线、位图、文本或填充形状的坐标传递给 点在剪裁 函数,确定图形输出是否显示在区域的边框内。 通过调用 矩形在剪 函数确定工作区的一部分是否与区域相交。 通过调用 剪裁偏移 函数按指定偏移量移动现有区域。 通过调用 剪裁新区 函数,从当前剪辑区域中排除工作区的矩形部分。 通过调用 交叉剪裁 函数,将工作区的矩形部分与当前剪辑区域合并。 获取标识剪辑区域的句柄后,应用程序可以执行区域通用的任何操作,例如: 通过调用 合并区域 函数将当前剪辑区域的副本与第二个区域组合在一起。 通过调用 对比区域 函数将当前剪辑区域的副本与第二个区域进行比较。 通过调用 点在区内 函数,确定某个点是否位于当前剪辑区域副本的内部。 应用程序通过调用与特定形状关联的函数来创建区域。 下表显示了与每个标准形状关联的函数 。形状 | 函数 |
矩形区域 | 创建矩形、新建矩形、设置区域 |
带圆角的矩形区域 | 建圆矩形 |
椭圆区域 | 创建椭圆、新建椭圆 |
多边形区域 | 建多边区 、叠多边区 |
每个区域创建函数返回一个标识新区域的句柄。 应用程序可以通过调用 选择对象 函数将区域选择到设备上下文中。 将某个区域选入设备上下文后,应用程序可以对其执行各种操作。 应用程序可以组合区域、比较区域、填充区域、绘制区域、反转内部、在其周围绘制框架、 移动区域、检索其尺寸以及测试光标是否位于其边界内。
中文名称 | 英文名称 | 示例 | 作用 |
剪裁函数 | |||
---|---|---|---|
剪裁新区 | ExcludeClipRect | 剪裁新区(设备,左,上,右,下) | 创建一个新的剪切区域,该区域由一个现存的剪切区域减去一个特定的矩形区域而构成 |
剪裁组合 | ExtSelectClipRgn | 剪裁组合(设备,区域,模式) | 使用指定的模式将指定的区域与当前的剪切区域进行组合。 |
设备边界 | GetClipBox | 设备边界(设备,矩形) | 获取围绕设备当前可见区域绘制的最紧密的边界矩形的尺寸。 |
剪裁区域 | GetClipRgn | 剪裁区域(设备,区域) | 获取指定设备的当前应用程序定义的剪切区域的句柄。 |
设备元区 | GetMetaRgn | 设备元区(设备,元区域) | 获取指定设备的元区域 |
区域相交 | SetMetaRgn | 区域相交(设备) | 将指定设备的当前裁剪区域与当前元区域相交,剪切区域将重置为空区域。 |
剪裁复制 | GetRandomRgn | 剪裁复制(设备,区域,4) | 将指定设备系统剪辑区域(4)复制到特定区域 |
交叉剪裁 | IntersectClipRect | 交叉剪裁(设备,左,上,右,下) | 从当前剪切区域和指定矩形的交点创建一个新的剪切区域。 |
剪裁偏移 | OffsetClipRgn | 剪裁偏移(设备,X,Y) | 将设备的剪切区域移动指定的偏移量。 |
点在剪裁 | PtVisible | 在否=点在剪裁(设备,x,y) | 确定指定的点是否在设备的剪裁区域内。 |
矩形在剪 | RectVisible | 在否=矩形在剪(设备,矩形) | 确定指定的矩形是否在设备的剪裁区域内。 |
选择剪裁 | SelectClipPath | 选择剪裁(设备,模式) | 选择当前路径作为设备的剪切区域,组合模式:1交集,2联合,3异或,4合并,5复制 |
选区剪裁 | SelectClipRgn | 选区剪裁(设备,区域) | 选择一个区域作为指定设备的当前剪辑区域。 |
区域函数 | |||
合并区域 | CombineRgn | 合并区域(目标,源区1,源区2,模式) | 组合两个区域,并将结果存储在第三个区域。模式:1交集,2联合,3异或,4合并,5复制 |
创建椭圆 | CreateEllipticRgn | 区域=创建椭圆(左,上,右,下) | 创建一个椭圆形区域。 |
新建椭圆 | CreateEllipticRgnIndirect | 区域=新建椭圆(矩形类) | 创建一个椭圆形区域。 |
建多边区 | CreatePolygonRgn | 建多边区(点数组,点数量,填充) | 创建一个由一系列点围成的区域。最后点与第一点相连以封闭多边形。 |
叠多边区 | CreatePolyPolygonRgn | 叠多边区(点数组,点计数组,点计数,填充) | 创建一个由一系列多边形组成的区域。多边形可以重叠。模式:1填充每个扫描线,2非零绕组值填充 |
创建矩形 | CreateRectRgn | 区域=创建矩形(左,上,右,下) | 创建一个矩形区域。 |
新建矩形 | CreateRectRgnIndirect | 区域=新建矩形(矩形类) | 创建一个矩形区域。 |
建圆矩形 | CreateRoundRectRgn | 区域=建圆矩形(左,上,右,下,圆宽,圆高) | 创建一个带圆角的矩形区域。 |
对比区域 | EqualRgn | 对比区域(区域1,区域2) | 检查两个指定的区域,以确定它们的大小形状是否相同。 |
区域转换 | ExtCreateRegion | 区域转换(转换,长度,数据) | 根据指定的区域转换和数据创建区域。如缩放,平移,旋转,剪切 |
填充区域 | FillRgn | 填充区域(设备,区域,笔刷) | 使用指定的画笔填充区域。 |
区域画框 | FrameRgn | 区域画框(设备,区域,画笔,笔宽,笔高) | 使用指定的画笔在指定区域周围绘制一个边框。 |
区域边界 | GetRgnBox | 区域边界(区域,矩形) | 获取指定区域的边界矩形。 |
区域数据 | GetRegionData | 区域数据(区域,大小,数据) | 将指定区域的数据填充指定的缓冲区。 |
填充模式 | GetPolyFillMode | 模式=填充模式(设备) | 获取指定设备的多边形填充模式。模式:1填充每个扫描线,2非零绕组值填充 |
模式填充 | SetPolyFillMode | 填充模式(设备,模式) | 设置指定设备的多边形填充模式。模式:1填充每个扫描线,2非零绕组值填充 |
反转区域 | InvertRgn | 反转区域(设备,区域) | 可以反转指定区域的颜色。 |
区域偏移 | OffsetRgn | 区域偏移(区域,X,Y) | 将区域移动指定的偏移量。 |
喷涂区域 | PaintRgn | 喷涂区域(设备,区域) | 使用当前选定的画笔在设备中绘制(涂漆)指定的区域。 |
点在区内 | PtInRegion | 在否=点在区内(区域,x,y) | 确定指定的点是否在指定区域内。 |
转换区域 | PathToRegion | 区域=转换区域(设备) | 从选择到指定设备的路径中创建一个区域。 |
矩形在区 | RectInRegion | 在否=矩形在区(区域,矩形) | 确定指定的矩形是否在指定区域边界内。 |
设置区域 | SetRectRgn | 设置区域(区域,左,上,右,下) | 将区域转换为具有指定坐标的矩形区域。 |
区域数据类
中文名字 | 英文名称 | 长度 | 作用解释 |
区域数据类 | RGNDATA | 32+ | 包含一个标头和一个构成区域的矩形数组。 矩形按从上到下、从左到右排序。 它们不重叠。 |
区域数据类——成员表 | |||
---|---|---|---|
标头 | rdh | 区域头类 | RGNDATAHEADER 结构。 |
数据 | Buffer[1] | 文本 | 指定包含构成区域的矩形结构的任意大小的缓冲区。 |
区域头类
中文名字 | 英文名称 | 长度 | 作用解释 |
区域头类 | RGNDATAHEADER | 32 | 指定区域的类型(区域是矩形还是梯形)、组成区域的矩形数量、包含矩形结构的缓冲区的大小等。 |
区域头类——成员表 | |||
---|---|---|---|
大小 | dwSize | 整数 | 标头的大小(以字节为单位)。 |
分类 | iType | 整数 | 区域的类型。此值必须是1。 |
块数 | nCount | 整数 | 构成区域的矩形数。 |
长度 | nRgnSize | 整数 | 接收构成区域的矩形结构所需的缓冲区的大小。如果大小未知,则此成员可以为零。 |
左 | rcBound.Left | 整数 | 区域(以逻辑单元为单位)的边框左边距。 |
上 | rcBound.Top | 整数 | 区域(以逻辑单元为单位)的边框上边距。 |
右 | rcBound.Right | 整数 | 区域(以逻辑单元为单位)的边框右边距。 |
下 | rcBound.Bottom | 整数 | 区域(以逻辑单元为单位)的边框左边距。 |