(1)在 QT 的绘图功能里, 类 QPainter 是重要的代码支撑,其提供了绘制文字,绘制基本图形的功能。 以此叠加,就可以构成复杂的图案生成。
本类的继承关系如下 :

++ 开始学习本类的成员函数 :

(2)继续 :

++以及 :

++开启本地绘图指令 :

(3)渲染提示 :

++以及 :

(3) 接着学习图像混合模式 :

++ 举例的框架,本文的测试都拿这个例子 :

++

++

++这些颜色的测试需要 alpha 值,目前还不会,不再测试了 :

++
/*
定义了数字图像合成所支持的模式。合成模式用于指定源图像中的像素如何与目标图像中的像素进行合并。
请注意,以“RasterOp”前缀表示的位元级光栅操作模式仅原生支持于X11和光栅绘图引擎中。
这意味着在Mac上使用这些模式的唯一途径是通过QImage。
表示混合模式的RasterOp模式不适用于具有Alpha组件的笔刷。
此外,开启QPainter::Antialiasing渲染提示将有效禁用RasterOp模式。
最普遍的类型是SourceOver(通常简称为alpha混合),
其中源像素以特定方式与目标像素融合,使得源像素的alpha分量决定了该像素的半透明程度。
几种合成模式要求在源图像或目标图像中包含一个alpha通道才能产生效果。
为了获得最佳性能,建议使用“Format ARGB32 Premultiplied”图像格式。
设置合成模式后,它将应用于所有绘画操作、笔刷、渐变和像素图/图像绘制。
*/
enum CompositionMode {
CompositionMode_SourceOver, //这是默认模式。源的alpha值用于将像素混合到目标之上。
//总之,意思是源图片在目标图片上面
CompositionMode_DestinationOver,//目标像素的alpha值用于将其叠加到源像素上。
//此模式是CompositionMode_SourceOver的逆操作。
CompositionMode_Clear, //目标中的像素被清除(设置为完全透明),与源无关。
CompositionMode_Source, //输出是源像素。
//(这意味着这是一个基本的复制操作,并且当源像素不透明时与SourceOver相同)
CompositionMode_Destination,//输出是目标像素。这意味着混合没有效果。
//此模式与CompositionMode Source的相反
CompositionMode_SourceIn, //输出是源,其中alpha值减去目标的alpha值。
CompositionMode_DestinationIn,//输出是目标,其中alpha值会根据源的alpha值进行减少。
//此模式与CompositionMode Sourcelnverse相反。。
CompositionMode_SourceOut, //输出是源,其中alpha值通过目的地的倒数进行减少。
CompositionMode_DestinationOut,
CompositionMode_SourceAtop,
CompositionMode_DestinationAtop,
CompositionMode_Xor,
//svg 1.2 blend modes
CompositionMode_Plus,
CompositionMode_Multiply,
CompositionMode_Screen,
CompositionMode_Overlay,
CompositionMode_Darken,
CompositionMode_Lighten,
CompositionMode_ColorDodge,
CompositionMode_ColorBurn,
CompositionMode_HardLight,
CompositionMode_SoftLight,
CompositionMode_Difference,
CompositionMode_Exclusion,
// ROPs
RasterOp_SourceOrDestination,
RasterOp_SourceAndDestination,
RasterOp_SourceXorDestination,
RasterOp_NotSourceAndNotDestination,
RasterOp_NotSourceOrNotDestination,
RasterOp_NotSourceXorDestination,
RasterOp_NotSource,
RasterOp_NotSourceAndDestination,
RasterOp_SourceAndNotDestination,
RasterOp_NotSourceOrDestination,
RasterOp_SourceOrNotDestination,
RasterOp_ClearDestination,
RasterOp_SetDestination,
RasterOp_NotDestination
};
(4)字体 :

(5)画笔 :

(6)画刷 :

++测试一下 :

(7)画刷原点 :

(8) 背景画刷 :

++补充, 文本绘制方向 :

(9)剪切路径? 不懂,老师在课本上没讲, 先记录下 :

++以及 :

(10)坐标变换 :

++更为基础的坐标矩阵变换 :

++测试一下:

(11)物理设备坐标系与逻辑坐标系 :

++ 可见,不进行任何坐标设置,视口与窗口坐标系也是存在的,只是与窗体画板的内容矩形重合。

++测试验证 :

(12) 下一篇介绍各种绘几何图形的函数。
(13)
谢谢
170

被折叠的 条评论
为什么被折叠?



