• QT绘制心形图案二


    本来打算用绘制贝塞尔曲线的方法绘制心形,可是本数学渣怎么都搞不定那几个控制点坐标。研究了一上午,通过lineTo方法,最终还是绘制出封闭的心形图。还收获了意外的效果。

    看来就差个女朋友,给她看了。

    代码如下:

    .h文件

     1 #pragma once
     2 
     3 #include <QtWidgets/QDialog>
     4 #include "ui_heart.h"
     5 #include <Qpainter>
     6 class Heart : public QDialog
     7 {
     8     Q_OBJECT
     9 public:
    10     Heart(QWidget *parent = Q_NULLPTR);
    11 protected:
    12     void paintEvent(QPaintEvent *);
    13 private:
    14     Ui::HeartClass ui;
    15 };

    .cpp文件

     1 #include "heart.h"
     2 
     3 Heart::Heart(QWidget *parent): QDialog(parent)
     4 {
     5     ui.setupUi(this);
     6 }
     7 
     8 void Heart::paintEvent(QPaintEvent *event)
     9 {
    10     double k = 10;
    11     QPainter painter(this);
    12     painter.setRenderHint(QPainter::Antialiasing, true);
    13     QColor my_color(237, 162, 255, 255);
    14     QBrush my_brush(my_color);
    15     painter.setPen(Qt::red);
    16     /*painter.setBrush(my_brush);*/
    17     painter.translate(this->width()/2, this->height()/2);
    18     QPainterPath polygonPath;
    19     polygonPath.setFillRule(Qt::WindingFill);
    20     float x = 16 * k * sin(0.0)*sin(0.0)*sin(0.0);
    21     float y = 13 * k * cos(0.0) - 5 * k*cos(0.0) - 2 * k*cos(0.0) - cos(0.0);
    22     polygonPath.moveTo(x, -y);
    23     for (double t = 0.01; t < 100; t += 0.05)
    24     {
    25         x = 16 * k * sin(k*t)*sin(k*t)*sin(k*t);
    26         y = 13 * k * cos(k*t) - 5 * k * cos(2 * k * t) - 2 * k * cos(3 * k * t) - cos(4 * k * t);
    27         polygonPath.lineTo(x, -y);
    28         /*painter.drawPoint(x,-y);
    29         painter.drawLine(0,0,x,-y);    
    30         painter.drawLine(0,0,x+100,-y);*/    
    31     }
    32     painter.drawPath(polygonPath);
    33 }

    效果图

  • 相关阅读:
    面试题 31: 求子数组的最大和
    [面试] 结构体占用空间的问题,内存对齐~! 真的懂了,cpu取加快速度,省空间来考虑。
    [计算机] 32768~32767 计算机中的 1 表示
    C#跨线程调用窗体控件
    合并字节数组
    将汉字转化为2位大写的16进制Unicode
    关公与子龙两大杀手
    早年的J2EE笔记
    给小组新成员的一份信
    c++虚函数详解
  • 原文地址:https://www.cnblogs.com/liuxianglei/p/9270661.html
Copyright © 2020-2023  润新知