用QPainter在pixmap上绘制带阴影的文本

时间:2016-10-12 19:55:04

标签: c++ qt shadow qpainter

我正在使用Qt在C ++中开发一个项目,我正在尝试使用QPainter在QPixmap上绘制文本时找到应用文本阴影的方法。

我知道QGraphicsDropShadowEffect是一个东西,我正在我的项目的其他部分使用,但我不能为我的生活找到一种方法来应用QGraphicsEffect在像素图上绘制QPainter 。使用不同的偏移和不透明度多次绘制相同的文本并不能完全消除它。

有没有办法做到这一点? 如果没有,我可以如何制作一个能够实现它的功能,给定QGraphicsEffect来获取半径和颜色?

提前致谢!

2 个答案:

答案 0 :(得分:1)

我认为“直接用阴影绘制文字”是不可能的,只能将阴影应用于已经绘制的元素并使用其alpha通道计算阴影。 / p>

您应该使用最终产品的组合物或在绘图过程中使用。如果在文本元素上使用它,它应该可以工作。另一种选择是以黑色绘制文本,应用高斯模糊,然后再次使用所需的偏移在其上绘制文本。

答案 1 :(得分:1)

感谢您的回答ddriver,它让我搜索了一些新的关键字,这让我找到适合我项目的解决方案。

我想到的是你可以简单地用你想要的文本和效果创建一个QLabel(在我的例子中是QGraphicsDropShadowEffect),并使用QWidget::grab()将其渲染到QPixmap中。然后,您可以像使用任何其他图像一样使用QPainter绘制这个新的像素图,方法是将像素图转换为QImage并使用QPainter的drawImage()。