QT使用QPainter加水印

1450046-20190919203356884-451358006.jpg
QT使用QPainter加水印
加水印的代码

//为QPixmap添加水印
void MainWindow::addMask(QPixmap& pm, const QString& text)
{
    QPainter painter(&pm);
    int fontSize = 25, spacing = 10;
    QFont font("微软雅黑", fontSize, QFont::Thin);
    font.setLetterSpacing(QFont::AbsoluteSpacing, spacing);
    painter.setFont(font);
    painter.setPen(QColor(150, 150, 150));
    painter.translate(pm.width() / 2, -pm.width() / 2);//调整位置
    painter.rotate(45);
    int squareEdgeSize = pm.width() * sin(45.0) + pm.height() * sin(45.0);//对角线长度
    int hCount = squareEdgeSize / ((fontSize + spacing) * (text.size() + 1)) + 1;
    int x = squareEdgeSize / hCount + (fontSize + spacing) * 3;
    int y = x / 2;

  
  • 0
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当然,我可以为您提供绘制螺旋线的示例代码。以下是使用QtQPainter类绘制螺旋线的示例: ```cpp #include <QApplication> #include <QMainWindow> #include <QPainter> #include <QTimer> class SpiralWidget : public QWidget { public: SpiralWidget(QWidget *parent = nullptr) : QWidget(parent) { resize(400, 400); // 设置定器,每隔50毫秒重绘一次 QTimer *timer = new QTimer(this); connect(timer, &QTimer::timeout, this, QOverload<>::of(&SpiralWidget::update)); timer->start(50); } protected: void paintEvent(QPaintEvent *event) override { Q_UNUSED(event) QPainter painter(this); // 设置画笔颜色和宽度 painter.setPen(Qt::red); painter.setRenderHint(QPainter::Antialiasing, true); // 设置螺旋线的起始点坐标 int centerX = width() / 2; int centerY = height() / 2; // 设置螺旋线的参数 int radiusStep = 5; int angleStep = 10; int maxRadius = qMin(width(), height()) / 2; // 绘制螺旋线 for (int radius = 0; radius <= maxRadius; radius += radiusStep) { int angle = radius / radiusStep * angleStep; int x = centerX + qCos(qDegreesToRadians(angle)) * radius; int y = centerY + qSin(qDegreesToRadians(angle)) * radius; painter.drawPoint(x, y); } } }; int main(int argc, char *argv[]) { QApplication app(argc, argv); QMainWindow window; SpiralWidget *spiralWidget = new SpiralWidget(&window); window.setCentralWidget(spiralWidget); window.show(); return app.exec(); } ``` 这是一个基于QWidget的简单例子,在窗口中绘制了一个红色的螺旋线。每隔50毫秒,窗口会重绘一次,实现动画效果。您可以根据需要调整绘制的参数和样式。希望这可以帮助到您!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值