要实现橡皮擦的功能,您可以在 else
分支中使用特定的绘图模式和颜色来绘制路径,从而实现擦除效果。这里是一个示例代码:
if (m_drawing) {
painter.setPen(m_pen);
painter.fillRect(rect(), m_Color);
// 绘制历史路径
for (int i = 0; i <= currentPathIndex; ++i) {
const QPainterPath& path = paths[i];
const QPen& pen = pathPens[i];
painter.setPen(pen);
painter.drawPath(path);
}
} else {
// 橡皮擦设置为擦除并为透明色
painter.setCompositionMode(QPainter::CompositionMode_Clear); // 设置绘图模式为擦除模式
painter.setPen(Qt::transparent); // 设置画笔颜色为透明
// 绘制当前路径,会以透明色进行擦除
const QPainterPath& erasePath = paths[currentPathIndex];
const QPen& erasePen = pathPens[currentPathIndex];
painter.drawPath(erasePath);
}
通过将 QPainter
的 setCompositionMode()
方法设置为 QPainter::CompositionMode_Clear
来启用擦除模式,并将画笔颜色设置为透明,即可实现路径的擦除效果。
请注意,在切换回书写笔之前,请确保将绘图模式和画笔颜色重置为默认值。希望这可以帮助到您。如有进一步问题,请随时提问。
内容由零声教学AI助手提供,问题来源于学员提问