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,把四个圆角半径调为正方形边长的一般,就得到了一个圆形


登录后回复
 

与 萌梦社区 的连接断开,我们正在尝试重连,请耐心等待