精华内容
下载资源
问答
  • QT 圆形头像绘制方法

    2020-12-07 20:31:22
    qt 圆形头像绘制方法,一是将图像转换成圆形。根据图像得到圆形的Pixmap,再将pixmap绘制到label上。二是将要显示图像的label设置成圆形。

    QT 圆形头像绘制方法

    目标效果:
    圆形头像.png

    方法一:

    将目标图像转换成圆形。根据图像得到圆形的Pixmap,再将pixmap绘制到label上。
    这种方法的优点是不必在意绘制的label的形状是什么。相当于目标图片被裁切成背景透明的圆形图片。

    //载入图片
    QString path = "D:/123.jpg";
    QPixmap pixmap(path);
    pixmap = pixmap.scaled(ui.label->size(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
    
    int width = ui.label->size().width();
    int height = ui.label->size().height();
    
    QPixmap image(width,height);
    image.fill(Qt::transparent);
    
    QPainterPath painterPath;
    painterPath.addEllipse(0, 0, width, height);
    
    QPainter painter(&image);
    painter.setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform);
    painter.setClipPath(painterPath);
    painter.drawPixmap(0, 0, width, height, pixmap);
    //绘制到label
    ui.label->setPixmap(image);
    

    注意:
    1.这里的label是高宽相等的;
    2.这里的label设置了背景透明。

    方法二:

    将要显示图像的label设置成圆形。
    设置样式:

    border-radius: 40px;
    border-image: url(D:/123.jpg);
    

    其中40是圆形半径(正方形边长的一半)。一个80*80的label,设置样式border-radius: 40px;,就会变成圆形:
    圆形label.png
    再为其贴个图,设置border-image属性即可。
    圆形图像.png
    如果只是要一个圆形的图标,图片内容不会怎么改变,可以使用这种方法,设置比较简单。
    但如果图片在程序运行期间时常改变,建议使用第一种方法。

    展开全文
  • qt生成圆形头像

    2019-07-03 17:08:49
    painter.fillRect(0, 0, size.width(), size.height(), Qt::white); painter.setBrush(QColor(0, 0, 0)); painter.drawRoundedRect(0, 0, size.width(), size.height(), 999, 999); QPixmap image = srcPixmap....

    废话不说,直接贴代码

     

    QPixmap HeadPortraitUtil::pixmapToRound(const QPixmap &srcPixmap, int radius)
    {
    	if (srcPixmap.isNull()) {
    		return QPixmap();
    	}
    	QSize size(2 * radius, 2 * radius);
    	QBitmap mask(size);
    	QPainter painter(&mask);
    	//painter.setRenderHint(QPainter::Antialiasing);
    	painter.setRenderHint(QPainter::SmoothPixmapTransform);
    	painter.fillRect(0, 0, size.width(), size.height(), Qt::white);
    	painter.setBrush(QColor(0, 0, 0));
    	painter.drawRoundedRect(0, 0, size.width(), size.height(), 999, 999);
    	QPixmap image = srcPixmap.scaled(size);
    	image.setMask(mask);
    	return image;
    }
    

     

    展开全文
  • Qt圆形头像

    千次阅读 2017-08-29 17:01:34
    QPixmap pixmapa(avantar); QPixmap pixmap(80,80);...pixmap.fill(Qt::transparent); QPainter painter(&pixmap); painter.setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform); QPainte


    QPixmap pixmapa(avantar);
    QPixmap pixmap(80,80);
    pixmap.fill(Qt::transparent);
    QPainter painter(&pixmap);
    painter.setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform);
    QPainterPath path;
    path.addEllipse(0, 0, 80, 80);
    painter.setClipPath(path);
    painter.drawPixmap(0, 0, 80, 80, pixmapa);
    ui->labelAvantar->setPixmap(pixmap);
    展开全文
  • QT实现抗锯齿圆形头像

    热门讨论 2015-01-20 20:38:53
    参考QT Demo(Image Composition),使用QT图片混合技术实现抗锯齿头像小Demo,Windows QtCreator创建运行通过。经过尝试setMask方式始终存在锯齿,最后在这种图片混合方式下尝试成功。build-showroundpic-Desktop_Qt_5...
  • Qt自定义控件之圆形按钮、圆形头像

    千次阅读 多人点赞 2020-06-03 10:11:55
    Qt自定义控件之圆形按钮、圆形头像一级目录二级目录三级目录 一级目录 二级目录 三级目录

    Qt自定义控件之圆形按钮、圆形头像

    前言

    现在很多软件的头像或者按钮都是圆形了,看起来比较舒服。比如QQ登录头像,酷狗客户端的一些按钮都是圆形。Qt实现圆形头像,大致有几种思路,第1种就是图片遮罩的方式,还有一种方法是使用样式表设置border-radius来实现圆形边框。这里要介绍的是使用Qt的绘画大师QPainter来实现。

    代码实现

    #include "roundbutton.h"
    #include "ui_roundbutton.h"
    #include <QPainter>
    
    #ifndef NO_TOUCH_EVENT
    
    RoundButton::RoundButton(QWidget *parent) :
        QWidget(parent),
        ui(new Ui::RoundButton)
    {
        ui->setupUi(this);
    
        m_radius = 200;
        isPressed = false;
        setIcon(":/ppd.jpeg");
    
    #ifdef NO_TOUCH_EVENT
        connect(this,&RoundButton::btnClicked,[=]
        {
            qDebug("Round button clicked.");
            setIcon(":/timo.jpg");
        });
    #endif
    }
    
    RoundButton::~RoundButton()
    {
        delete ui;
    }
    
    void RoundButton::setIcon(const QString &fileName)
    {
         if(pixmap.load(fileName))
         {
             qDebug("load icon ok.");
             update();
         }
    }
    
    void RoundButton::setRadius(int radius)
    {
        m_radius = radius;
    }
    
    #ifdef NO_TOUCH_EVENT
    void RoundButton::mousePressEvent(QMouseEvent *event)
    {
        Q_UNUSED(event)
    
        isPressed = true;
    }
    
    void RoundButton::mouseMoveEvent(QMouseEvent *event)
    {
        Q_UNUSED(event)
    
    }
    
    void RoundButton::mouseReleaseEvent(QMouseEvent *event)
    {
        Q_UNUSED(event)
    
        if(isPressed)
        {
            isPressed = false;
            emit btnClicked();
        }
    }
    #endif
    
    void RoundButton::paintEvent(QPaintEvent *event)
    {
        Q_UNUSED(event)
    
        QPainter painter(this);
        //抗锯齿
        painter.setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform);
    	//绘画路径
        QPainterPath path;
        path.addEllipse(this->rect().center(),m_radius,m_radius);
        painter.setClipPath(path);
    	//绘图
        painter.drawPixmap(QRect(0,0,m_radius*2,m_radius*2),pixmap);
    
    }
    
    

    QPainterPath是一个图形构建块的对象,如矩形、椭圆、直线和曲线。构建块可以加入在封闭的子路径中,例如:矩形或椭圆形。一个封闭的路径同时存在开始点和结束点。或者作为未封闭的子路径独立存在,如:直线和曲线。
    addEllipse在指定的边框矩形内创建椭圆,并将其作为闭合子路径添加到绘制路径。
    椭圆由一条顺时针的曲线组成,在零度(3点钟位置)开始和结束。
    在这里插入图片描述
    最后通过drawPixmap把图片画出来。本示例中打开 NO_TOUCH_EVENT 宏可作为圆形按钮使用,关闭就仅作为圆形头像使用。

    当然了还可以使用painter的drawRoundedRect来实现圆形的绘画。这个有兴趣的可以自行研究。

    实验效果

    在这里插入图片描述
    本示例代码稍作修改即可运用到工程中,灵活性也比较高。

    作者:费码程序猿
    欢迎技术交流:QQ:255895056
    转载请注明出处,如有不当欢迎指正

    展开全文
  • QT QLabel圆形头像

    2019-08-13 19:05:47
    效果图: 继承自 QLabel ,可以用在头像框显示(类似QQ的那种),基本功能包括以圆形框显示指定的图片,鼠标移入圆形框会给框套一层自定义的透明层,点击圆形框后发射信号。
  • QT实现圆形头像

    2014-03-10 15:04:55
    最近在研究QT,想做一个类似YY的好友列表,好友的头像是圆形的。... 利用setmask做过两种尝试,都存在锯齿问题: ... 想问问大家还有没有其他办法能实现这样的圆形头像,或者有什么办法能解决锯齿问题,谢谢。
  • 酷狗手机版播放音乐的时候在播放按钮上面会显示一个旋转的歌手圆形头像,现用qt绘制窗口来实现这一功能。 1、首先是画圆,因为不知道窗口大小,要根据窗口的宽高大小来确定。 QPainter painter(this); painter....
  • Qt Windows 制作圆形头像

    千次阅读 2015-11-02 18:04:57
    QT制作圆形头像类似于 这样还蛮麻烦的,终于找到一个比较满意的方案,与大家一起分享。 1、在QML中。 qml代码如下,当然你要配上你的图。 import QtQuick 2.0 import QtQuick.Controls 1.1 import Qt...
  • Qt 如何实现圆形头像

    2019-04-29 20:40:53
    //加入一个圆形 绘图是从左上角的(56,20)坐标开始绘制的 ,120,120是绘图的宽高 painter.setClipPath(path); painter.drawPixmap(QRect(56,20,120,120),pixmap); painter.end(); } 提示:PaintEvent会...
  • QT自定义控件之圆形头像的实现

    千次阅读 2017-10-06 15:44:55
    好了,接下来我们来说一下如何实现这个圆形头像,之前笔者搜索网上看到实现思路基本上都是通过图片遮罩来实现的,在这里笔者就不予置评了,其实Qt已经很完善的内置了很多的API,如果你对Qt的2D绘图比较熟悉的话几行...
  • 使用 canvas 进行绘制 代码 Canvas{ id: imgcanvas property url src: "qrc:/Images/testtx.png...Qt 自带的功能,保证了质量 图片效果 较好 缺点 占用资源 ( 猜测 ) 欢迎补充
  • 原链接 看到个很好效果的实现,代码如下 QString file = "F:\\我的文档\\eer\\user\\188\\Head\\custom.png"; QPixmap pixmapa(file);... pixmap.fill(Qt::transparent); QPainter painter(&amp...
  • QT重写控件类,并在designer中拖动控件后使用 ** 重写label类 ** 相信大家在使用QT designer拖动控件的时候会发现控件十分的丑陋,那么如何让自己界面中的控件更加的美观呢?...重绘label,这里给它变成了圆形
  • 总第27篇 在Qt项目开发过程中,某些特定的场合...本文将详细说明此接口的应用,并用代码实现比较常见的圆形图像的制作。 1.接口说明及应用 Qt中针对窗口部件遮罩功能提供的setMask()函数, 主要有两种形式: ...
  • qt实现头像上传功能

    2019-07-13 22:09:21
    想必大家都使用过qt的自定义头像功能吧,那么图1应该不会陌生,本片文章我就是要模拟一个这样的功能,虽然没有这么强大的效果,但是能够满足一定的需求。 首先在讲解功能之前,我先给出一片文章,QT实现的...
  • QML做类似Android圆形头像

    千次阅读 2017-04-09 08:36:11
    前言在移动端应用中,用户头像一般都是圆形的, 在Android开发中github上有专门生成圆形图片的库可以使用,传入一张正常照片就可以返回圆形图片,并用户头像设置。那么在QML中也可以实现相同的效果,并且使用非常...
  • QLabel控件实现圆形头像显示

    千次阅读 2019-02-12 21:52:13
    有时候需要绘制类似qq头像的圆形头像,可以利用QT中2D绘图的API实现。 效果图: 具体代码如下: #include "mainwindow.h" #include "ui_mainwindow.h" #include &lt;QPixmap&gt; ...

空空如也

空空如也

1 2 3 4 5 6
收藏数 114
精华内容 45
关键字:

qt圆形头像