• 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 }

    效果图

  • 相关阅读:
    3.6 批量维护来源准则/查看来源准则
    3.5 供货比例(来源准则)控制
    3.4 新供应商引入
    3.3 集团化采购管理
    3.2 采购管理目标
    3.1 采购管理规划
    2.8 生产辅料管理
    2.7 车间任务的批量移动和批量完工入库
    2.6 自动更新车间任务的供应类型和完工子库
    2.5 总装与部装跟单任务的同步发放
  • 原文地址:https://www.cnblogs.com/liuxianglei/p/9270661.html
Copyright © 2020-2023  润新知