【Qt之绘制兔纸】

效果

代码

cpp 复制代码
class drawRabbit: public QWidget {
public:
  drawRabbit(QWidget *parent = nullptr) : QWidget(parent) {}

private:
  void paintEvent(QPaintEvent *event) {
    QPainter painter(this);
    painter.setRenderHint(QPainter::Antialiasing, true);

    // 绘制兔子的耳朵
    painter.setPen(Qt::NoPen);
    painter.setBrush(QColor("#f2a272"));
    painter.drawEllipse(QRectF(50, 30, 40, 80));
    painter.drawEllipse(QRectF(140, 30, 40, 80));
    painter.setBrush(QColor("#ffb7a2"));
    painter.drawEllipse(QRectF(52, 38, 36, 66));
    painter.drawEllipse(QRectF(142, 38, 36, 66));

    // 绘制兔子的脸
    painter.setBrush(QColor("#f7c2b7"));
    painter.drawEllipse(QRectF(70, 70, 100, 130));

    // 绘制兔子的眼睛
    painter.setPen(QPen(Qt::white, 4));
    painter.setBrush(QColor("#ffffff"));
    painter.drawEllipse(QRectF(90, 100, 30, 40));
    painter.drawEllipse(QRectF(130, 100, 30, 40));
    painter.setPen(QPen(Qt::black, 2));
    painter.setBrush(QColor("#000000"));
    painter.drawEllipse(QRectF(97, 110, 16, 22));
    painter.drawEllipse(QRectF(137, 110, 16, 22));
    painter.setBrush(QColor("#ffffff"));
    painter.drawEllipse(QRectF(103, 115, 5, 5));
    painter.drawEllipse(QRectF(143, 115, 5, 5));

    // 绘制兔子的嘴巴
    painter.setPen(QPen(QColor("#d95259"), 4));
    painter.setBrush(QColor("#d95259"));
    painter.drawEllipse(QRectF(100, 145, 60, 40));
    painter.setBrush(QColor("#ffffff"));
    painter.drawEllipse(QRectF(110, 150, 10, 10));
    painter.drawEllipse(QRectF(140, 150, 10, 10));

    // 绘制兔子的身体
    painter.setBrush(QColor("#f7c2b7"));
    painter.drawEllipse(QRectF(20, 200, 200, 150));

    // 绘制兔子的手臂
    painter.setPen(Qt::NoPen);
    painter.setBrush(QColor("#f2a272"));
    painter.drawEllipse(QRectF(10, 210, 50, 80));
    painter.drawEllipse(QRectF(210, 210, 50, 80));
    painter.setBrush(QColor("#ffb7a2"));
    painter.drawEllipse(QRectF(12, 218, 46, 66));
    painter.drawEllipse(QRectF(212, 218, 46, 66));

    // 绘制兔子的腿
    painter.setPen(Qt::NoPen);
    painter.setBrush(QColor("#f2a272"));
    painter.drawEllipse(QRectF(60, 320, 50, 80));
    painter.drawEllipse(QRectF(140, 320, 50, 80));
    painter.setBrush(QColor("#ffb7a2"));
    painter.drawEllipse(QRectF(62, 328, 46, 66));
    painter.drawEllipse(QRectF(142, 328, 46, 66));
  }
};

.main

cpp 复制代码
  QApplication app(argc, argv);

  drawRabbit ra;
  ra.resize(240, 400);
  ra.show();

  return app.exec();
相关推荐
coder!mq2 小时前
说几个常见的语法糖?
java·开发语言·算法
gugucoding2 小时前
38. 【Java】Stream API(下):高级操作与性能
java·开发语言
Lhan.zzZ2 小时前
在 Visual Studio 2022 中打造可扩展的动态链接库模块:从零搭建到原理解析
开发语言·c++·visual studio
心平气和量大福大2 小时前
android-实例-蒲公英-更新与安装-5-签名与生成APK
android·java·开发语言
码哥DFS2 小时前
构造函数、实例对象、对象原型 ----三者关系
开发语言·javascript·原型模式
quantdash_cc3 小时前
告别自建 Requests/BS4 网页爬虫:基于 QuantDash 搭建零维保的高性能量化行情流水线
开发语言·爬虫·python·pandas·量化·quantdash
ydd1001003 小时前
寻找两个正序数组的中位数 Java 题解,二分分割详解
java·开发语言
半亩码田4 小时前
C#转Python第3.1篇:Python 的 class 没有访问修饰符?面向对象的另一条路
开发语言·python·c#
Wzx1980124 小时前
python沙箱和docker沙箱你选对了吗?
开发语言·python·docker
牧羊人.3334 小时前
Python 办公自动化从入门到入土|09 数据容器之字典
开发语言·python