(20) 绘制图片与平铺图片 :

++举例 :

(21) 绘制 pixmap 的成员函数很多 :

++以及 :

++以及 :

++

++

(22) drawPicture :

(23) drawImage ,高度类似于 drawPixmap, 但多了图像转换的函数形参 Qt::ImageConversionFlags :

++源码版本 :
// Image conversion flags. The unusual ordering is caused by
// compatibility and default requirements.
// 图像转换标志。这种不寻常的顺序是由兼容性和默认要求引起的。
//如果列表中没有包含其他值,则设置标记为“(默认)”的选项(因为默认值是零)
enum Qt::ImageConversionFlag {
ColorMode_Mask = 0x00000003, //掩码
AutoColor = 0x00000000,
//(默认)-如果图像具有深度为1且仅包含黑白像素,则pixmap将变为单色。
ColorOnly = 0x00000003, //pixmap被抖动/转换为本地显示深度。
MonoOnly = 0x00000002, //pixmap变成单色。
//如有必要,使用所选的抖动算法进行抖动处理。
// Reserved = 0x00000001,
AlphaDither_Mask = 0x0000000c, //掩码,1位alpha掩码的抖动模式偏好:
ThresholdAlphaDither = 0x00000000, //(默认)-无抖动。
OrderedAlphaDither = 0x00000004, //更快、有序的抖动。
DiffuseAlphaDither = 0x00000008, //使用误差扩散的高质量抖动。
NoAlpha = 0x0000000c, // Not supported
Dither_Mask = 0x00000030, //掩码,描述抖动 Dither模式偏好
DiffuseDither = 0x00000000, //(默认)-使用误差扩散的高质量抖动。
OrderedDither = 0x00000010, //更快、有序的抖动。
ThresholdDither = 0x00000020, //无抖动;使用最接近的颜色。
// ReservedDither = 0x00000030,
DitherMode_Mask = 0x000000c0, //掩码,颜色匹配与抖动偏好的对比:
AutoDither = 0x00000000, //(默认)-只在转换为1位或8位索引格式时进行抖动。
PreferDither = 0x00000040, //在转换为较小的颜色空间时,始终对图像进行抖动处理。
AvoidDither = 0x00000080,
//仅在源图像使用的不同颜色数量大于目标格式的颜色表大小时,才进行抖动到索引格式。
NoOpaqueDetection = 0x00000100, //不要检查图像是否包含非不透明像素。
//如果知道图像是半透明的,并且您想避免在找到非不透明像素之前检查图像中像素的开销,
// 或者出于其他原因希望像素图保留一个alpha通道,则应使用此标志。
//如果图像没有alpha通道,则此标志将不起作用。
NoFormatConversion = 0x00000200 //不要对图像进行任何格式转换。
//这可能在将 QImage转换为 QPixmap 以进行一次性渲染操作时非常有用。
//请注意,非首选格式的 QPixmap作为绘图设备时可能会慢得多。
};
Q_DECLARE_FLAGS(ImageConversionFlags, ImageConversionFlag)
Q_DECLARE_OPERATORS_FOR_FLAGS(ImageConversionFlags)
++给出绘图函数 :

++以及 :

++举例 :

(24)接着开始绘制字体 :

++以及 :

++绘制多行文本 :

++ 以及 :

++附上对齐策略的枚举取值 :

++以及 :

++ 以及 :

++返回文本所占据的空间 :

(25)
(26)
谢谢

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



