StupidBeauty
Read times:1616Posted at: - no title specified

Qt5.2文档翻译:QPainter,QPainter Class

成员类型文档

enum QPainter::CompositionMode

定义了所支持的那些数字图片合成模式。合成模式,指的是,源图片中的那些像素,应当如何与目标图片中的像素合并起来。

请注意,那些以 RasterOp 前缀开头的按位进行 的光栅操作模式,只在X11 和光栅绘图引擎中 被原生支持。 这就意味着, 在 Mac 上,唯一一个利用这些模式的方式就是,使用 QImage 。对于 带有透明分量的画笔和画刷, 以RasterOp 开头的混合模式是 被支持的。另外 ,开启 QPainter::Antialiasing 这个渲染建议的话,也会禁用掉RasterOp 模式。

最常见的类型是SourceOver (通常被称作透明混合) ,这种模式下,源图片中的像素被混合到目标图片的对应像素之上,并且,源图片中的透明分量定义了该像素的透明度。

当绘图设备是一个 QImage 的时候,图片格式必须 被设置为 Format_ARGB32_Premultiplied Format_ARGB32 ,才能使得 这些合成模式产生真正的效果。出于性能方面 的考虑, 预乘版本的格式是首选的格式。

当设置了合成模式之后,它就会应用到所有的绘图操作符、画笔、画刷、渐变和位图/图片绘制操作上。

常量

说明

QPainter::CompositionMode_So urceOver

0

这是默认模式。源图片中的透明分量被用于将当前像 素混合到目标图片的对应像素上。

QPainter::CompositionMode_DestinationOver

1

目标图片中的透明分量被用于将当前像素混合到源图片的对应像素上。这个模式与CompositionMode_SourceOver 相反。

QPainter::CompositionMode_Clear

2

无论源图片中对应的像素是什么值,目标图片中的像素都会全部被清除(被设置为完全透明)。

QPainter::CompositionMode_Source

3

输出内容即为源图片中的像素。(这意味着,就是一个基本的复制操作,并且,当源图片中的像素是完全不透明的时候,此模式与SourceOver 等价)

QPainter::CompositionMode_Destination

4

输出内容即为目标图片中的像素。这意味着,混合动作无效果。此模式与CompositionMode_Source 相反。

QPainter::CompositionMode_SourceIn

5

输出内容即为源图片中的像素,并且,其图案被目标图片中的透明分量裁减。

QPainter::CompositionMode_DestinationIn

6

输出内容即为目标图片中的像素,并且,其图案被源图片中的透明分量裁减。此模式与CompositionMode_SourceIn 相反。

QPainter::CompositionMode_SourceOut

7

输出内容即为源图片中的像素,并且,其图案被目标图片中透明分量的相反图案裁减。

QPainter::CompositionMode_DestinationOut

8

输出内容即为目标图片中的像素,并且,其图案被源图片中透明分量的相反图案裁减。此模式与CompositionMode_SourceOut相反

QPainter::CompositionMode_SourceAtop

9

源图片中的像素被覆盖于目标图片的对应像素之上,并且,源图片中的像素被目标图片中的透明分量裁减。

QPainter::CompositionMode_DestinationAtop

10

目标图片中的像素被覆盖于源图片的对应像素之上,并且,目标图片中的像素被源图片中的透明分量裁减。此模式与CompositionMode_SourceAtop 相反。

QPainter::CompositionMode_Xor

11

源图片中的像素被目标图片中透明分量的相反图案裁减,目标图片中的像素被源图片中透明分量的相反图案裁减,然后,二者合并。 CompositionMode_Xor与按位进行的Xor不同。

QPainter::CompositionMode_Plus

12

源图片和目标图片的透明分量和颜色值都会相加。

QPainter::CompositionMode_Multiply

13

输出内容为,源图片中的颜色与目标图片中的颜色相乘。将一个颜色与白色相乘,则会让它保持原来的颜色,将一个颜色与黑色相乘,会让它变成黑色。

QPainter::CompositionMode_Screen

14

源图片和目标图片中的颜色,首先被反转,然后相乘。使用白色来对一个颜色进行筛选(Screening)操作,会产生白色,而使用黑色来对一个颜色进行筛选操作,会让该颜色保持原样。

QPainter::CompositionMode_Overlay

15

按照目标图片中各个像素的颜色,来对当前像素的颜色进行相乘或筛选操作。目标图片中的颜色会与源图片中的颜色混合,以反映目标图片的明亮或黑暗属性。

QPainter::CompositionMode_Da rken

16

对于输出内容中的每个像素,会选取源图片和目标图 片中较暗的那个颜色。

QPainter::CompositionMode_Lighten

17

对于输出内容中的每个像素,会选取源图片和目标图片中较亮的那个颜色。

QPainter::CompositionMode_ColorDodge

18

目标图片中各个像素的颜色会被变亮,以反映源图片中的颜色。如果源图片中某个像素是黑色的,则会让目标图片中对应像素的颜色保持不变。

QPainter::CompositionMode_ColorBurn

19

目标图片中各个像素的颜色会被变暗,以反映源图片中的颜色。如果源图片中某个像素是白色的,则会让目标图片中对应像素的颜色保持不变。

QPainter::CompositionMode_HardLight

20

按照源图片中各个像素的颜色,对当前像素的颜色进行相乘或筛选操作。明亮的源图片像素颜色会使得目标图片中相应像素的颜色变亮,黑暗的源图片像素颜色会使得目标图片中相应像素的颜色变暗。

QPainter::CompositionMode_SoftLight

21

按照源图片中各个像素的颜色,将当前像素的颜色变暗或变亮。类似于CompositionMode_HardLight

QPainter::CompositionMode_Difference

22

将较亮的颜色减去较暗的颜色。在这种模式下,以白色绘制则会反转目标图片中的颜色,以黑色绘制则会令目标图片中的颜色保持不变。

QPainter::CompositionMode_Exclusion

23

类似CompositionMode_Difference,但是对比度较低。在这种模式下,以白色绘制则会反转目标图片中的颜色,以黑色绘制则会令目标图片中的颜色保持不变。

QPainter::RasterOp_SourceOrDestination

24

对源图片和目标图片中对应的像素,进行一次按位的或(OR)操作(src OR dst)。

QPainter::RasterOp_SourceAndDestination

25

对源图片和目标图片中对应的像素,进行一次按位的与(AND)操作(src AND dst)。

QPainter::RasterOp_SourceXorDestination

26

对源图片和目标图片中对应的像素,进行一次按位的异或(XOR)操作(src XOR dst)。

QPainter::RasterOp_NotSourceAndNotDestination

27

对源图片和目标图片中对应的像素,进行一次按位的或非(NOR)操作((NOT src) AND (NOT dst))。

QPainter::RasterOp_NotSourceOrNotDestination

28

对源图片和目标图片中对应的像素,进行一次按位的与非(NAND)操作((NOT src) OR (NOT dst))。

QPainter::RasterOp_NotSourceXorDestination

29

将源图片中的像素值反转,然后与目标图片中对应的像素进行按位的异或操作((NOT src) XOR dst)。

QPainter::RasterOp_NotSource

30

对源图片中的各个像素进行一次按位的非操作(NOT src)。

QPainter::RasterOp_NotSourceAndDestination

31

将源图片中的像素值反转,然后与目标图片中对应的像素进行按位的与操作((NOT src) AND dst)。

QPainter::RasterOp_SourceAndNotDestination

32

将目标图片中的像素值反转,然后与源图片中对应的像素进行按位的与操作(src AND (NOT dst))。

QPainter::RasterOp_NotSource OrDestination

33

将源图片中的像素值反转,然后与目标图片中对应的 像素进行按位的或操作((NOT src) OR dst)。

QPainter::RasterOp_ClearDestination

35

无论源图片中的像素是什么颜色,都对目标图片中所有的像素进行清除操作(设置为0)。

QPainter::RasterOp_SetDestination

36

无论源图片中的像素是什么颜色,都对目标图片中所有的像素进行设置操作(设置为1)。

QPainter::RasterOp_NotDestination

37

对目标图片中的各个像素进行一次按位的非操作(NOT dst)。

QPainter::RasterOp_SourceOrNotDestination

34

将目标图片中的像素值反转,然后与源图片中对应的像素进行按位的或操作(src OR (NOT dst))。

参考 compositionMode () setCompositionMode () 合成模式 图片合成示例

成员函数文档

void  QPainter:: beginNativePainting ()

立即应用并清空绘图管道 ,做好准备,以让用户 向底层图形上下文直接发送命令。后续必须调用 一次 endNativePainting ()

注意 ,只有那些 由底层绘图引擎改变过的状态会被重置为它们相应的默认状态。 在不同的版本中,我们所重置的那些状态可能会不同。对于 OpenGL  2 引擎 ,以下状态会被重置:

  • •.混合会被禁用

  • •.深度、景深(stencil)和剪刀测试会被禁用

  • •.活动材质单元会被重置为0

  • •.深度掩码、深度函数和清空深度会被重置为它们的默认值

  • •.景深掩码、景深操作和景深函数会被重置为它们的默认值

  • •.当前颜色会被重置为纯白

例如,假设用户 在一个beginNativePaint()/ endNativePainting ()块中改变了 OpenGL 多边形模式,则, 它不会被 endNativePainting ()调用重置为默认状态。 以下是一个示例,展示了绘图命令 和原生 OpenGL 命令的混合使用:

QPainter painter(this);

painter. fillRect (0, 0, 128, 128, Qt ::green);

painter.beginNativePainting();

glEnable(GL_SCISSOR_TEST);

glScissor(0, 0, 64, 64);

glClearColor(1, 0, 0, 1);

glClear(GL_COLOR_BUFFER_BIT);

glDisable(GL_SCISSOR_TEST);

painter. endNativePainting ();

此函数是从Qt 4.6开始引入的。

参考 endNativePainting ()

CompositionMode  QPainter:: compositionMode () const

返回当前的合成模式。

参考 CompositionMode setCompositionMode ()

bool  QPainter:: end ()

结束绘图。在绘图时用到的任何资源都会被释放。一般情况下,妳不需要调用这个函数,因为它会被析构函数调用。

如果 该绘图器不再是活跃的,则返回真( true );否则返回 假( false )。

参考 begin () isActive ()

void QPainter::endNativePainting()

在手动执行了原生绘图命令之后,重置绘图器。让绘图器在调用任何其它绘图命令之前重置它所依赖的任何原生状态。

此函数是从Qt 4.6开始引入的。

参考 beginNativePainting ()

void  QPainter:: setCompositionMode ( CompositionMode mode )

将合成模式设置成 mode

警告: 只有 QImage 上做操作的 QPainter 才完整地支持所有的合成模式。正如 compositionMode () 中所说 ,以RasterOp 开头的模式在X11 中是被支持的。

参考 compositionMode ()

张柏芝,陈冠希

Your opinions
Your name:Email:Website url:Opinion content:
- no title specified

HxLauncher: Launch Android applications by voice commands