|
DAWorkbench 0.0.1
DAWorkbench API
|
参照QwtWidgetOverlay的Widget Overlay 更多...
#include <DAAbstractWidgetOverlay.h>
类 | |
| class | PrivateData |
Public 类型 | |
| enum | MaskMode { NoMask , MaskHint , AlphaMask } |
| enum | RenderMode { AutoRenderMode , CopyAlphaMask , DrawOverlay } |
| 渲染模式 更多... | |
Public 槽 | |
| void | updateOverlay () |
Public 成员函数 | |
| DAAbstractWidgetOverlay (QWidget *parent) | |
| void | setMaskMode (MaskMode mode) |
| MaskMode | getMaskMode () const |
| void | setRenderMode (RenderMode mode) |
| RenderMode | getRenderMode () const |
| virtual bool | eventFilter (QObject *object, QEvent *event) override |
静态 Public 成员函数 | |
| static QRegion | maskRegion (const QRect &r, int penWidth) |
| 矩形的遮罩区域计算 | |
| static QRegion | maskRegionVOrHLine (const QLine &VOrHLine, int penWidth) |
| 针对水平线或竖直线的遮罩区域计算 | |
Protected 成员函数 | |
| virtual void | drawOverlay (QPainter *painter) const =0 |
| 绘制遮罩层的主要业务实现函数 | |
| virtual QRegion | maskHint () const |
| 计算遮罩区的近似值 | |
| virtual void | paintEvent (QPaintEvent *event) override |
| virtual void | resizeEvent (QResizeEvent *event) override |
参照QwtWidgetOverlay的Widget Overlay
遮罩层的主要用例是为了避免对下层窗口进行繁重的重绘操作。 与绘图画布结合使用时,覆盖层可以避免重新绘制,因为画布的内容可以从其后备存储中恢复。
\brief 遮罩模式
当使用遮罩时,下层窗口仅会为覆盖层的遮罩区域接收绘制事件。 否则,Qt 会触发完整的重绘。在性能较低的硬件(如嵌入式系统)上, 或者在远程桌面上使用光栅绘制引擎时,位块传输是一个明显的操作,需要避免。
是否以及如何使用遮罩取决于遮罩计算的复杂度和遮罩可以排除多少像素。
默认设置为 MaskHint。
| 枚举值 | |
|---|---|
| NoMask | 不使用遮罩。 |
| MaskHint | 使用 maskHint() 作为遮罩 在许多情况下,快速近似就足够了,没有必要构建更详细的遮罩 (例如文本的边界矩形)。 |
| AlphaMask | 通过检查 alpha 值来计算遮罩 有时无法给出快速近似,需要通过绘制覆盖层并测试结果来计算遮罩。 当有一个有效的 maskHint() 时,只会检查该近似范围内的像素。 |
|
protectedpure virtual |
|
overridevirtual |
|
protectedvirtual |
计算遮罩区的近似值
NoMask 不使用遮罩。
默认实现返回一个无效区域,表示没有建议区域。
|
static |
矩形的遮罩区域计算
| r | 矩形 |
| penWidth | 画笔宽度 |
|
static |
针对水平线或竖直线的遮罩区域计算
| VOrHLine | 水平线或竖直线 |
| penWidth | 画笔的宽度 |