极语言官方网站

画刷画笔

有两种类型的画刷:逻辑画刷和物理画刷。逻辑画刷是应用程序用于绘制形状的理想位图的说明。

物理画刷是设备驱动程序根据应用程序的逻辑画刷定义创建的实际位图。

当应用程序调用创建画刷的函数之一时,它将检索标识逻辑画刷的句柄。

当应用程序将此句柄传递给 选择对象 函数时,相应显示器或打印机的设备驱动程序将创建物理画刷。

当应用程序调用绘图函数来绘制形状时,系统会在绘制操作开始时放置画刷,

并将画刷位图中的像素映射到 窗口原点(窗口左上角)的工作区。

系统映射的像素的坐标称为 画刷原点。 默认画刷原点位于画刷位图的左上角,坐标 (0,0) 。

然后,系统跨工作区复制画刷,形成与位图一样高的图案。

复制操作将继续逐行执行,直到填充整个工作区。 但是,画刷图案仅在指定形状的边界内可见。

在某些情况下,不应使用默认画刷原点。

例如,应用程序可能需要使用相同的画刷绘制其父窗口和子窗口的背景,并将子窗口的背景与父窗口的背景混合在一起。

为此,应用程序应通过调用 设置原点 函数并将原点移动到所需的像素数来重置画刷原点。

下图显示了使用应用程序定义的画笔填充的五角星。

此图显示了画笔的缩放图像,以及在绘制操作开始时将其映射到的位置。

有四种类型的逻辑画刷: 实心画刷、 库存画刷、 阴影笔和 图案画刷。下图显示了这些画刷。

实心画刷 即纯色画刷,是包含 64 个相同颜色像素的逻辑画刷。

应用程序可以通过调用 创建画刷 函数创建纯色逻辑画刷,并指定所需的画刷颜色。

创建实心画刷后,应用程序可以在其设备上下文中选择它,并使用它来绘制填充形状。例如:

画刷=创建画刷(255);//创建红色画刷

选择对象(设备,画刷);//选择画刷对象到指定的设备

图形设备接口 (GDI) 维护了七个预定义的库存画刷。

还有 21 个预定义的库存画刷由窗口管理界面维护 (USER) 。

下图显示了使用七个预定义的库存画刷绘制的矩形。

显示七个框的插图:一个黑色、三个灰色阴影和三个显示为空的框

应用程序可以通过调用 固有对象 函数并指定画刷类型来检索标识七个库存画刷之一的句柄。

窗口管理界面维护的 21 个常用画刷对应于菜单、滚动条和按钮等窗口元素的颜色。

应用程序可以通过调用 取颜色刷 函数并指定系统颜色值来获取标识这些画刷之一的句柄。

应用程序可以通过调用 取元素色 函数来检索与特定窗口元素对应的颜色。

应用程序可以通过调用 改元素色 函数来设置与窗口元素对应的颜色。

GDI 维护有六个预定义的逻辑阴影画刷。 以下矩形是使用六个预定义阴影画刷绘制的。

显示六个框的插图,其中一个由六个阴影画刷分别填充

应用程序可以通过调用 图案笔刷 函数(指定六种阴影样式之一)来创建阴影画刷。

从应用程序定义的位图或独立于设备的位图 (DIB) 创建模式 (或自定义) 画刷。 以下矩形是使用不同的图案画刷绘制的。

显示三个框的插图,每个框都填充了不同的图案

若要创建逻辑模式画笔,应用程序必须首先创建位图。

创建位图后,应用程序可以通过调用 图案笔刷 或 内建画刷 函数来创建逻辑模式画刷,并提供标识位图 (或 DIB) 的句柄。

上图中显示的画刷是从单色位图创建的。

有关位图、DIB 以及创建它们的函数的说明,请参阅 位图

画矩形 函数的名称 (模式块传输) 的缩写意味着此函数只是复制画笔 (或图案) ,直到它填充指定的矩形。

但是,函数实际上要强大得多。

在复制画笔之前,它通过使用光栅操作 (ROP) ,将图案的颜色数据与视频显示器上现有像素的颜色数据组合在一起。

ROP 是应用于复制画笔的颜色数据位以及显示设备上目标矩形的颜色数据位的按位运算。

有 256 个 ROM;但是, 画矩形 函数仅识别需要模式和目标 (不需要源) 。

下表标识了最常见的光栅。

中文名称英文名称示例作用
黑调色板BLACKNESS$00000042将所有输出转换为二进制零。
白调色板WHITENESS$00FF0062将所有输出转换为二进制输出。
反转图形DSTINVERT$00550009反转目标位图。
填色复制PATCOPY$00F00021将当前在目标设备中选择的画笔复制到目标位图中。
混色复制PATINVERT$005A0049使用布尔 XOR 运算符将目标位图与模式组合在一起。

Microsoft 图像颜色管理 (ICM) 可确保在任何设备上尽可能接近其原始意图呈现彩色图像、

图形或文本对象,尽管设备之间的成像技术和颜色功能存在差异。

无论是在彩色扫描仪上扫描图像或其他图形、通过 Internet 下载图像、在屏幕上查看或编辑它,

还是将其输出到纸张、胶片或其他媒体上,ICM 2.0 都可以帮助你保持颜色一致和准确。


有两种类型的笔:整形笔和几何笔。 整容笔用于需要固定宽度线条和快速绘制线条的应用程序。

例如,CAD 应用程序使用修饰笔生成隐藏的、部分、中心和尺寸线的宽度介于 0.015 到 0.022 英寸之间,而不考虑比例系数。

几何笔用于需要可缩放线条、具有独特端部或联接样式的线条以及比单个像素宽的线条的应用程序。

例如,电子表格应用程序使用几何笔将条形图中的每个条形图定义为宽线。

整容笔的尺寸以设备单位指定。 因此,使用整形笔绘制的线条始终具有固定宽度。

使用整形笔绘制的线条通常比使用几何笔绘制的线条快 3 到 10 倍。

整容笔有三个属性:宽度、样式和颜色。若要创建整容笔,请使用 创建画笔 新建画笔 或 扩展画笔 函数。

若要检索系统管理的三支常用整容笔之一,请使用 固有对象 函数。

(创建笔或获取其中一支常用笔) 的句柄后,使用 选择对象 函数将笔选入应用程序的设备上下文 (DC) 。

从此,应用程序将使用此笔在其工作区中的任何线条绘制操作。

几何笔的尺寸以逻辑单元指定。

因此,使用几何笔绘制的线条可以缩放,也就是说,它们可能看起来更宽或更窄,具体取决于当前世界转换。

除了与整容笔共享的三个属性 (宽度、样式和颜色) 外,

几何笔还具有以下四个属性:图案、可选阴影、端部样式和联接样式。

有七个笔属性定义笔的类型及其特征:宽度、样式、颜色、图案、阴影、结束样式和联接样式。

整容笔和几何笔都具有宽度、样式和颜色属性。

只有几何笔具有图案、阴影、结束样式和联接样式属性。

图案和可选的阴影属性通常与画笔相关联,但也可用于几何笔。

中文名称英文名称示例作用
新建笔刷CreateBrushIndirect笔刷=新建笔刷(笔刷类)创建一个具有指定笔刷类结构样式,颜色和模式的逻辑画笔。
内建空刷CreateDIBPatternBrush笔刷=内建空刷(位图信息,格式)创建一个与设备无关的位图(DIB)的模式逻辑画刷。随后可以将刷子选择到与支持光栅操作的设备。格式:0=RGB,1=索引
内建画刷CreateDIBPatternBrushPt笔刷=内建画刷(位图信息,格式)创建一个与设备无关的位图(DIB)的模式逻辑画刷。格式:0=RGB,1=索引
图案笔刷CreateHatchBrush画刷=图案笔刷(样式,颜色)创建一个具有指定阴影图案和颜色的逻辑画笔。
内建笔刷CreatePatternBrush画刷=内建笔刷(内图)使用指定的位图模式创建逻辑画笔。位图可以是"内建位图"创建,也可以是与设备相关的位图。
创建画刷CreateSolidBrush画刷=创建画刷(颜色)创建一个具有指定纯色的实心逻辑画笔。用来绘制填充形状内部的位图。
笔刷原点GetBrushOrgEx笔刷原点(设备,坐标类)获取指定设备的当前画笔原点。
设置原点SetBrushOrgEx设置原点(设备,左,上,旧坐标)设置指定设备的当前画笔原点。
画矩形PatBlt画矩形(设备,左,上,宽,高,光栅)使用当前画笔来绘制给定的矩形。通过使用给定的光栅操作来组合画笔颜色和表面颜色。
创建画笔CreatePen画笔=创建画笔(样式,笔宽,颜色)创建一个具有指定样式,宽度和颜色的逻辑笔。用于在设备上绘制线条和曲线。
新建画笔CreatePenIndirect画笔=新建画笔(画笔类)创建一个逻辑的化妆笔,它具有在画笔类结构中指定的样式,宽度和颜色。
扩展画笔ExtCreatePen扩展画笔(样式,笔宽,笔刷类,长度,样式数组)创建一个具有指定样式,宽度和画笔属性的逻辑化妆或几何笔。样式是画笔样式、类型、端帽和联接的组合

阴影图案样式
英文名称数值作用解释
HS_HORIZONTAL0水平阴影
HS_VERTICAL1垂直阴影
HS_FDIAGONAL2从左到右阴影下 45 度
HS_BDIAGONAL3从左到右阴影向上 45 度
HS_CROSS4横向缩放与纵向阴影线
HS_DIAGCROSS545 度交叉截断

画笔样式
英文名称数值作用解释
PS_SOLID0触控笔是实心的。
PS_DASH1触控笔虚线。 仅当笔宽度为 1 或更少(以设备单位为单位)时,此样式才有效。
PS_DOT2笔被点点。 仅当笔宽度为 1 或更少(以设备单位为单位)时,此样式才有效。
PS_DASHDOT3笔具有交替的短划线和点。 仅当笔宽度为 1 或更少(以设备单位为单位)时,此样式才有效。
PS_DASHDOTDOT4笔具有交替的短划线和双点。 仅当笔宽度为 1 或更少(以设备单位为单位)时,此样式才有效。
PS_NULL5笔不可见。
PS_INSIDEFRAME6触控笔是实心的。在采用边框的绘图中图形的尺寸会缩小,使其完全适合边界矩形,同时考虑笔的宽度。 这仅适用于几何笔
PS_USERSTYLE7笔使用用户提供的样式数组。
PS_ALTERNATE8笔设置其他像素。(此样式仅适用于整容笔。)

画笔类型
英文名称数值作用解释
PS_COSMETIC0笔是整容的。
PS_GEOMETRIC0x10000笔是几何的。

画笔端帽
英文名称数值作用解释
PS_ENDCAP_ROUND0末端是圆的。
PS_ENDCAP_SQUARE0x100末端是正方的。
PS_ENDCAP_FLAT0x200末端是平的。

画笔联接
英文名称数值作用解释
PS_JOIN_ROUND0联接是圆的。
PS_JOIN_BEVEL0x1000联接是斜切的。
PS_JOIN_MITER0x2000当前限制内进行斜接。超出限制将进行斜角。

笔刷类
中文名字英文名称长度作用解释
笔刷类LOGBRUSH12包含了笔刷数据的信息
笔刷类——成员表
样式lbStyle整数指定画笔样式。BS_SOLID等
颜色lbColor整数指定要绘制画笔的颜色。中空笔刷和内存指定无效
填充lbHatch整数指定一个填充样式。HS_CROSS等

画笔类
中文名字英文名称长度作用解释
画笔类LOGPEN12包含了画笔数据的信息
画笔类——成员表
样式lopnStyle整数指定画笔样式。PS_SOLID等
宽度lopnWidth.x整数指定要绘制画笔的宽度
笔宽lopnWidth.y整数未使用,设计的问题
颜色lopnColor整数指定画笔的颜色

色位类
中文名字英文名称长度作用解释
色位类COLORBYTES4描述了由红色,绿色,蓝色和透明色的颜色位。
色度类——成员表
蓝位BlueByte字节绿色位值。
绿位GreenByte字节绿色位值。
红位RedByte字节红色位值。
透明AlphaByte字节透明色位值