Qt 设置圆形头像例程问题



  • QImage resultImage(QSize(100,100),QImage::Format_ARGB32_Premultiplied);
    QImage head(":/images/Head.png");
    head.scaled(100,100);
    QImage head_mask(":/images/Head_Background_Mask.png");
    QPainter painter(&resultImage);
    painter.setCompositionMode(QPainter::CompositionMode_Source);
    painter.fillRect(resultImage.rect(), Qt::transparent);
    painter.setCompositionMode(QPainter::CompositionMode_SourceOver);
    painter.drawImage(0, 0, head_mask);
    painter.setCompositionMode(QPainter::CompositionMode_SourceIn);
    painter.drawImage(0, 0, head);
    painter.setCompositionMode(QPainter::CompositionMode_DestinationOver);
    painter.end();

    我看了一下帮助文档还是不太理解这个QPainter::CompositionMode_Source和QPainter::CompositionMode_Destination的概念,而且做出来的Demo刚好抠的是外面的边框而不是中间的圆0_1460601161253_dd28.png

    请问该怎么修改代码呢?

    自己也在试,但是不太明白这个的含义QPainter::CompositionMode,都没试出来想要的结果。想要的结果是,中间是圆形显示的,周边不显示。

    蒙版如下图:
    0_1460601237074_ID_USER_MASK.png



  • @学酥 额,自己写代码绘制效果啊~~~
    我喜欢用QLabel加个QSS画圆角,简单方便,也好修改和维护.



  • @taadis 那是圆角,我要的是整圆



  • 已经让美工作一张刚好相反的图像了。虽然解决了问题,但是还是有不明白的地方吧。



  • @学酥 一个正方形,4个圆角,不就是一个圆形了么?



  • @学酥 这么说让用户上传图片的时候程序都要自动处理成这么一张相反的图片咯



  • 正方形的label,把四个圆角半径调为正方形边长的一般,就得到了一个圆形


 

最近的回复

  • 这个很有意思 ^_^

    阅读更多
  • 思路:
    1.把官方时钟demo改了,加了秒针,加了壁纸,加了小萝莉
    2.QWindow窗口嵌入到桌面

    0_1533891238039_20180810_164211.gif

    改版

    去掉秒针,把小萝莉正过来,沿着表盘走

    0_1533893719543_20180810_173309.gif

    源代码

    Fork me on Gitee

    阅读更多
  • 思路:
    1.识别鼠标移动事件
    2.QPropertyAnimation实现移动动画
    3.QLabel和QMovie使用gif

    0_1533808278715_20180809_174840.gif

    阅读更多
  • 很多小软件,实现了很好的功能。给你点赞!

    阅读更多

关注我们

微博
QQ群











召唤伊斯特瓦尔